[MySQL]MySQL一些常用命令

前言
今天介绍一些MySQL常用的实用命令,都是一些比较简单的命令。已经知道的朋友,就当是巩固吧,不知道的童鞋,可以好好在自己的机器上,练习下。  
0. 显示数据库
命令:show databases。
作用:列出当前数据库服务器中所有的数据库。
例子:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| andyqian           |
| mydata             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
1. 切换数据库
命令: use database_name。
作用: 切换数据库。
例子:
mysql> use andyqian;
Database changed
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)
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)
注意:我这里使用终端直接连接数据库,\G为按列格式化显示。如果使用Navicat工具,则为下面这样。
4. 查看MySQL版本
命令:select version(); 。
作用:查看服务器版本。
例子:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.20    |
+-----------+
1 row in set (0.00 sec)
注意:查看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)
注意:上面是仅仅是为了演示,在生产环境中,不建议直接使用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)
注意:该命令详细的展示了表的信息,其中包括表名,表的存储引擎,版本,数据长度,索引长度,创建时间,修改时间等等。
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
注意:该命令显示了所有连接数据库的进程数,其中就包括,用户,主机,连接的数据库等信息。
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)
注意:这里显示了表中的索引信息,从这里就能看出建了哪些索引,联合索引的顺序。对索引不了解的童鞋,可以看看这篇文章《写会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)
注意: 查看SQL的执行计划是一个好习惯,无论是新手,还是老司机,都应该养成这个习惯。上面这个执行计划还读的懂吗?如果不懂,可以回顾这篇文章《读懂MySQL执行计划》
最后
上面列出了一些SQL命令,在实际工作中,非常实用。其实工作中用到的SQL命令远远不止这些,下次我们再写。


Mysql查看数据库信息常见命令
1,查看所有数据库
show databases;
2,查看当前使用的数据库
select database();
3,查看数据库使用端口
show variables like ‘port’;
4,查看当前数据库大小
use information_schema;
select concat(round(sum(data_length)/(1024*1024),2) + round(sum(index_length)/(1024*1024),2),'MB') as 'DB Size' from tables where table_schema=’数据库名’;
5,查看数据所用空间大小
use information_schema;
select concat(round(sum(data_length)/(1024*1024),2),'MB') as 'DB Size' from tables where table_schema=’数据库名’;
6,查看索引所用空间大小
use information_schema;
select concat(round(sum(index_length)/(1024*1024),2)
 ,'MB') as 'DB Size' from tables where table_schema=’数据库名’;
7,查看数据库编码
show variables like ‘character% ‘;
character_set_client      为客户端编码方式;
character_set_connection  为建立连接使用的编码;
character_set_database    为数据库的编码;
character_set_results     为结果集的编码;
character_set_server      为数据库服务器的编码;
只要保证以上采用的编码方式一样,就不会出现乱码问题。
8,查看数据库表信息
show tables;
9,查看数据库所有用户信息
select distinct concat('user: ',user,'@',host,';') as query from mysql.user;
10,查看某个具体用户权限
show grants for ‘用户’@‘地址’;
11,查看数据库最大连接数
show variables like ‘%max_connections%’;
12,查看数据库当前连接数,并发数
show starts like ’Threads%’;
Threads_cached : 代表当前此时此刻线程缓存中有多少空闲线程。
Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
Threads_created :代表从最近一次服务启动,已创建线程的数量。
Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。
13,查看数据文件存放路径
show variables like ‘%datadir%’;
14,创建数据库
1、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库
采用create schema和create database创建数据库的效果一样。
2、create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户
密码8位以上,包括:大写字母、小写字母、数字、特殊字符
%:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘
3、grant select,insert,update,delete,create on [数据库名称].* to [用户名称];--用户授权数据库
*代表整个数据库
4、flush  privileges ;--立即启用修改
5、revoke all on *.* from tester;--取消用户所有数据库(表)的所有权限
6、delete from mysql.user where user='tester';--删除用户
7、drop database [schema名称|数据库名称];--删除数据库

分类: mysql

posted on 2020-03-11 20:22  gaomatlab  阅读(194)  评论(0编辑  收藏  举报

导航