前言
今天介绍一些MySQL常用的实用命令,都是一些比较简单的命令。已经知道的朋友,就当是巩固吧,不知道的童鞋,可以好好在自己的机器上,练习下。
0. 显示数据库
命令:show databases。
作用:列出当前数据库服务器中所有的数据库。
例子:
复制
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | andyqian | | mydata | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
1. 切换数据库
命令: use database_name。
作用: 切换数据库。
例子:
复制
mysql> use andyqian; Database changed
1.
2.
3.
2. 显示数据库中的所有表
命令: show tables。
作用: 显示数据库中的所有表。
例子:
复制
mysql> show tables; +--------------------+ | Tables_in_andyqian | +--------------------+ | hit_counter | | t_base_01 | | t_base_data | | t_base_user | +--------------------+ 4 rows in set (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
3. 显示表中的所有列
命令:show full columns tables_name;
作用: 显示表中所有列信息。
例子:
复制
mysql> show full columns from t_base_data\G; *************************** 1. row *************************** Field: id Type: bigint(20) Collation: NULL Null: NO Key: PRI Default: NULL Extra: auto_increment Privileges: select,insert,update,references Comment: *************************** 2. row *************************** Field: content Type: json Collation: NULL Null: YES Key: Default: NULL Extra: Privileges: select,insert,update,references Comment: 2 rows in set (0.01 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
注意:我这里使用终端直接连接数据库,\G为按列格式化显示。如果使用Navicat工具,则为下面这样。
4. 查看MySQL版本
命令:select version(); 。
作用:查看服务器版本。
例子:
复制
mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.20 | +-----------+ 1 row in set (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
注意:查看MySQL版本是一件非常重要的事情,比如:MySQL5.6之前就不支持Online DDL,MySQL 5.7.8 之前就不支持JSON数据类型。
5. 查看当前用户
命令:select current_user();
作用:显示当前登录用户
例子:
复制
mysql> select current_user(); +----------------+ | current_user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
注意:上面是仅仅是为了演示,在生产环境中,不建议直接使用root用户,建议的是:建一个新用户连接数据库,以及做好权限分配,至于为什么?这里就不一一展开了,下次单独拧出来写一篇文章。
6. 显示单表信息
命令:show table status like table_name。
作用:显示表详细信息。
例子:
复制
mysql> show table status like "t_base_data"\G; *************************** 1. row *************************** Name: t_base_data Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 2 Avg_row_length: 8192 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: 3 Create_time: 2017-12-08 00:30:03 Update_time: NULL Check_time: NULL Collation: utf8_unicode_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
注意:该命令详细的展示了表的信息,其中包括表名,表的存储引擎,版本,数据长度,索引长度,创建时间,修改时间等等。
7. 显示进程数
命令: show processlist。
作用:显示正在操作数据库的进程数。
例子:
复制
mysql> show processlist\G; *************************** 1. row *************************** Id: 6 User: root Host: localhost db: andyqian Command: Query Time: 0 State: starting Info: show processlist *************************** 2. row *************************** Id: 7 User: root Host: localhost:46612 db: NULL Command: Sleep Time: 1439 State: Info: NULL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
注意:该命令显示了所有连接数据库的进程数,其中就包括,用户,主机,连接的数据库等信息。
8. 显示索引
命令:show index from table_name;
作用:显示表中的所有索引。
例子:
复制
mysql> show index from t_base_data\G; *************************** 1. row *************************** Table: t_base_data Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: id Collation: A Cardinality: 2 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: t_base_data Non_unique: 1 Key_name: idx_created_at Seq_in_index: 1 Column_name: created_at Collation: A Cardinality: 1 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 2 rows in set (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
注意:这里显示了表中的索引信息,从这里就能看出建了哪些索引,联合索引的顺序。对索引不了解的童鞋,可以看看这篇文章《写会MySQL索引》。
9. 查看执行计划
命令:explain 查询语句。
作用:查看查询语句的执行情况,常用于SQL优化。
例子:
复制
mysql> explain select * from t_base_user where created_at>"2017-12-09"\G; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: t_base_user partitions: NULL type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 1 filtered: 100.00 Extra: Using where 1 row in set, 1 warning (0.00 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
注意: 查看SQL的执行计划是一个好习惯,无论是新手,还是老司机,都应该养成这个习惯。上面这个执行计划还读的懂吗?如果不懂,可以回顾这篇文章《读懂MySQL执行计划》
***
上面列出了一些SQL命令,在实际工作中,非常实用。其实工作中用到的SQL命令远远不止这些,下次我们再写。