MySQL中show语法使用总结详解数据库

MySQL中 show 语法的使用:

先查看MySQL版本信息:
mysql> select version(); 
+------------+ 
| version()  | 
+------------+ 
| 5.6.16-log | 
+------------+ 
1 row in set (0.00 sec)

帮助查看:

mysql> help show 
mysql> help SHOW TABLE; 
mysql> help SHOW WARNINGS

1.显示mysql中所有数据库的名称.

mysql>show databases; 

2.显示当前数据库中所有表的名称

mysql>show tables; 
或 
mysql>show tables from database_name;  

3.显示表中列名称

mysql>show columns from database_name.table_name; 

4.查看某MySQL用户的使用权限

mysql>show grants for user_name; 

5.显示create database 语句是否能够创建指定的数据库,并可以查看到创建库语句的SQL信息。

mysql>show create database database_name; 

6.显示create table 语句是否能够创建指定的数据表,并可以查看到表创建语句的SQL信息。

mysql>show create table table_name; 

7.显示安装以后可用的存储引擎和默认引擎。

mysql>show engines; 

8.显示最后一个执行的语句所产生的错误、警告和通知

mysql> show warnings;  

9.只显示最后一个执行语句所产生的错误

mysql>show errors; 

10.显示系统中正在运行的所有进程,也就是当前正在执行的查询.

mysql> show processlist/G 

11.查看所有存储过程。

mysql> show procedure status; 

12.查看某个存储过程内容

show create procedure 存储过程名称; 

13.查看函数的内容.

show create function func_name; 

……

由于这几个show指令的参数太多,这里单独进行解析.

使用 show status 查看MySQL服务器状态信息.

      有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SELECT语句、执行了多少UPDATE/DELETE/INSERT语句等统计信息,从而便于我们根据当前MySQL服务器的运行状态进行对应的调整或优化工作。

      在MySQL中,我们可以使用SHOW STATUS指令语句来查看MySQL服务器的状态信息。下面,我们以DOS命令窗口的形式连接MySQL,并执行show status;指令,我们将看到如下显示信息:

            ---执行show status指令显示的部分结果---       
+-----------------------------------------------------------------+--------------------------+ 
| Variable_name                                                   | Value                    | 
+-----------------------------------------------------------------+--------------------------+ 
| Aborted_clients                                                 | 737          
| Tokudb_FILESYSTEM_PREAD_NUM                                     | 16                       | 
| Tokudb_FILESYSTEM_PREAD_BYTES                                   | 8192                     | 
| Tokudb_FILESYSTEM_LONG_PREAD_TIME                               | 0                        | 
| Tokudb_FILESYSTEM_LONG_PREAD_NUM                                | 0                        | 
| Uptime                                                          | 2697503                  | 
| Uptime_since_flush_status                                       | 2697503         

     当我们执行show status语句时,MySQL将会列出多达300多条的状态信息记录,其中包括了供我们查看了解的各种信息。不过,如果直接使用show status指令得到300多条记录,会让我们看得眼花缭乱,因此我们希望能够按需查看一部分状态信息。这个时候,我们可以在show status语句后加上对应的like子句。

例如:

–查询当前MySQL本次启动后的运行统计时间.

mysql> show status like 'uptime'; 
+---------------+---------+ 
| Variable_name | Value   | 
+---------------+---------+ 
| Uptime        | 2698122 | 
+---------------+---------+ 
1 row in set (0.00 sec) 

–查询本次MySQL启动后执行的SELECT语句的次数.

mysql> show status like 'com_select'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| Com_select    | 2     | 
+---------------+-------+ 
1 row in set (0.00 sec) 

      此外,与WHERE子句中的LIKE关键字类似,show status后的LIKE关键字也可以使用’_’ 或’%’等通配符来进行模糊匹配。例如我们可以执行如下语句来查看MySQL服务器的线程信息:  

mysql> show status like 'Thread_%'; 
+-------------------------+-------+ 
| Variable_name           | Value | 
+-------------------------+-------+ 
| Threadpool_idle_threads | 0     | 
| Threadpool_threads      | 0     | 
| Threads_cached          | 11    | 
| Threads_connected       | 1     | 
| Threads_created         | 15    | 
| Threads_rejected        | 0     | 
| Threads_running         | 3     | 
+-------------------------+-------+ 
7 rows in set (0.00 sec) 

      值得注意的是,在上述show status like ‘com_select’指令的执行示例中,显示的SELECT语句统计信息仅仅表示当前会话连接执行的SELECT语句数量。因为,show status指令的完整语法如下:

SHOW [统计范围] STATUS [LIKE '状态项名称'] 
--统计范围关键字分为GLOBAL和SESSION(或LOCAL)两种。 

      在show status的完整语法中,”[]”中的部分是可选的,如果我们的show status语句中不包含统计范围关键字,则默认统计范围为SESSION,也就是只统计当前连接的状态信息。如果我们需要查询自当前MySQL启动后所有连接执行的SELECT语句总数,我们可以执行如下语句: 

mysql> show global status like 'com_select'; 

以上即是show status的详细用法。由于show status的状态统计项较多,我们就不再一一解释每个统计项的具体含义,在这里,我们仅列出部分常用的状态信息查看语句: 

--查看MySQL本次启动后的运行时间(单位:秒) 
show status like 'uptime'; 
 
--查看select语句的执行数 
show [global] status like 'com_select'; 
 
--查看insert语句的执行数 
show [global] status like 'com_insert'; 
 
--查看update语句的执行数 
show [global] status like 'com_update'; 
 
--查看delete语句的执行数 
show [global] status like 'com_delete'; 
 
--查看试图连接到MySQL(不管是否连接成功)的连接数 
show status like 'connections'; 
 
--查看线程缓存内的线程的数量。 
show status like 'threads_cached'; 
 
--查看当前打开的连接的数量。 
show status like 'threads_connected'; 
 
--查看当前打开的连接的数量。 
show status like 'threads_connected'; 
 
--查看创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。 
show status like 'threads_created'; 
 
--查看激活的(非睡眠状态)线程数。 
show status like 'threads_running'; 
 
 
--查看立即获得的表的锁的次数。 
show status like 'table_locks_immediate'; 
 
--查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。 
show status like 'table_locks_waited'; 
 
--查看创建时间超过slow_launch_time秒的线程数。 
show status like 'slow_launch_threads'; 
 
--查看查询时间超过long_query_time秒的查询的个数。 
show status like 'slow_queries';

 使用 SHOW INDEX 语法 查看表的索引状态

语法:

SHOW INDEX FROM [tb_name]  

执行后结果如下:

mysql> SHOW INDEX FROM l_yy/G 
*************************** 1. row *************************** 
        Table: l_yy 
   Non_unique: 0 
     Key_name: PRIMARY 
 Seq_in_index: 1 
  Column_name: id 
    Collation: A 
  Cardinality: 8556 
     Sub_part: NULL 
       Packed: NULL 
         Null:  
   Index_type: BTREE 
      Comment:  
Index_comment:  
1 row in set (0.00 sec) 

show index 返回字段解析: 

· Table 
 
表的名称。 
 
· Non_unique 
如果索引不能包括重复词,则为0。如果可以,则为1。 
· Key_name 
 
索引的名称。 
· Seq_in_index 
 
索引中的列序列号,从1开始。 
 
· Column_name 
 
列名称。 
 
· Collation 
列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类). 
 
· Cardinality 
 
索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新. 
 
· Sub_part 
如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。 
 
· Packed 
指示关键字如何被压缩。如果没有被压缩,则为NULL。 
 
· Null 
如果列含有NULL,则含有YES。如果没有,则该列含有NO。 
 
· Index_type 
 
用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。 
 
· Comment 
多种评注。 

show variables用于显示mysql服务器变量。

mysqld服务维护两种变量。全局变量影响服务器的全局操作。会话变量影响具体客户端连接相关操作。

通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量。要想更改全局变量,必须具有SUPER权限,重启mysql服务后失效.

通过SET SESSION var_name语句来更改动态会话变量.但客户可以只更改自己的会话变量,而不更改其它客户的会话变量,退出终端后更改失效.

SHOW VARIABLES通常结合like使用,具体用法如下:

1.查看全局字符集

mysql> show global variables like 'character%'; 
+--------------------------+----------------------------+ 
| Variable_name            | Value                      | 
+--------------------------+----------------------------+ 
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
8 rows in set (0.00 sec) 
 
mysql> SHOW VARIABLES LIKE 'collation_%'; 
+----------------------+-------------------+ 
| Variable_name        | Value             | 
+----------------------+-------------------+ 
| collation_connection | utf8_general_ci   | 
| collation_database   | latin1_swedish_ci | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+ 
3 rows in set (0.00 sec) 

2.查看当前错误日志配置:
mysql> show global variables like '%log_err%'; 
+---------------------+---------------------------------+ 
| Variable_name       | Value                           | 
+---------------------+---------------------------------+ 
| binlog_error_action | IGNORE_ERROR                    | 
| log_error           | /usr/local/mysql/logs/error.log | 
+---------------------+---------------------------------+ 
2 rows in set (0.00 sec) 

3.查看二进制日志是否开启.

mysql> show variables like 'log_bin'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| log_bin       | OFF   | 
+---------------+-------+ 
1 row in set (0.00 sec) 

4.查看mysql的连接数.

mysql> show variables like '%connections%'; 
+----------------------+-------+ 
| Variable_name        | Value | 
+----------------------+-------+ 
| max_connections      | 151   | 
| max_user_connections | 0     | 
+----------------------+-------+ 
2 rows in set (0.00 sec) 

5.查看二进制日志的存储格式
mysql> show variables like 'binlog_format'; 
+---------------+-----------+ 
| Variable_name | Value     | 
+---------------+-----------+ 
| binlog_format | STATEMENT | 
+---------------+-----------+ 
1 row in set (0.00 sec)

本处以更改日志格式的操作来说明set变量的使用

set global binlog_format=mixed;    //全局更改,数据库重启后失效 
set session binlog_format=mixed;  //客户端更改,退出终端后失效. 

 

更多使用以后慢慢整理和添加

 

参考文档:http://www.365mini.com/page/mysql-show-status.htm

       http://www.ttlsa.com/mysql/mysql_show_status_descriptsions/

     http://blog.oldboyedu.com/mysql-optimization/

              http://baike.xsoftlab.net/view/218.html

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/6734.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论