MySQL 学习笔记(一)基础操作

首先,我是在Windows 7 环境下,安装的版本是 5.7.13MySQL Community Server。

MySQL 一些基础操作

打开关闭mysql服务

打开net start mysql , 关闭net stop mysql

查询MySQL版本

切换到mysql的安装文件,bin目录下。

1
2
3
cd D:\mysql-5.7.13\bin
>mysqladmin --version
>mysqladmin Ver 8.42 Distrib 5.7.13, for Win64 on x86_64

修改root密码
方法一:

Mysql安装成功后,默认root用户密码为空,我们先执行mysql.exe进入数据库。
将root用户的密码改为123456. 退出,重新登入时,则需要输入密码。

1
2
3
4
5
6
7
8
9
10
11
12
mysql> set password for root@localhost=password('123456');
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> exit;

C:\Users\User>mysql -uroot -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

如果出现

1
2
3
mysql> set password for root@localhost=password('123456');

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

是因为之前设置了启动MySQL服务的时候跳过权限表认证mysqld --skip-grant-tables,这种情况可以适用于忘记root密码的情况,需要刷新权限之后再进行上述改密码操作。

1
2
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
方法二:

MySQL5.7中mysql库中的user表中取消了password字段,而是将密码进行加密后,放进authentication_string 字段中。

1
2
3
4
5
6
7
8
9
10
mysql> select User, Password from mysql.user;
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
mysql> select User, authentication_string from mysql.user;
+-----------+-------------------------------------------+
| User | authentication_string |
+-----------+-------------------------------------------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

因此,我们还可以通过update来更改root密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> use mysql            切换到mysql表
Database changed

mysql> update user set authentication_string=password("123") where User="root";
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1

mysql> flush privileges; 刷新权限
Query OK, 0 rows affected (0.01 sec)

mysql> quit; 退出
Bye

C:\Users\User>mysql -uroot -p 重新登陆,更改成功
Enter password: ***

其中,flush privileges; 权限刷新操作很重要,是因为权限信息是在mysqld服务启动时就加载到内存中的,因此任何在原权限表中的修改都不会直接生效。而flush privileges 操作就是把表中的操作更新到内存中。

MySQL 查询

MySQL的关键词不区分大小写。
例一:

1
2
3
4
5
6
7
mysql> SeLeCt vErSiOn(), current_DATE;
+-----------+--------------+
| vErSiOn() | current_DATE |
+-----------+--------------+
| 5.7.13 | 2017-06-23 |
+-----------+--------------+
1 row in set (0.00 sec)

MySQL可以作为简单的计算器。
例二:

1
2
3
4
5
6
7
mysql> Select sin(PI()/4),(2-3)*5;
+--------------------+---------+
| sin(PI()/4) | (2-3)*5 |
+--------------------+---------+
| 0.7071067811865476 | -5 |
+--------------------+---------+
1 row in set (0.03 sec)

MySQL可以在一行处理多个表达式,用分号隔开。
例三:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> Select version();select now();
+-----------+
| version() |
+-----------+
| 5.7.13 |
+-----------+
1 row in set (0.00 sec)

+---------------------+
| now() |
+---------------------+
| 2017-06-23 16:34:47 |
+---------------------+
1 row in set (0.00 sec)

同样,若是某一个查询语句过于冗长,我们也可以分成几行来执行。MySQL接受自由格式的输入,收集分号前的语句,然后执行。
例四:

1
2
3
4
5
6
7
8
9
10
11
mysql> select
-> user()
-> ,
-> current_date
-> ;
+----------------+--------------+
| user() | current_date |
+----------------+--------------+
| root@localhost | 2017-06-23 |
+----------------+--------------+
1 row in set (0.00 sec)

若在输入的中间放弃查询,可以按CTRL+C 退出。

1
2
3
mysql> select
-> user
-> ^C


[1]. 参考: https://dev.mysql.com/doc/refman/5.7/en/entering-queries.html

如果觉得对您有帮助,就扫我交个朋友吧!