SET 和 SHOW语法(二)

14.5.3.7 SHOW CREATE VIEW 语法

SHOW CREATE VIEW view_name

根据给定的试图名显示一个完整的 CREATE VIEW 语句。它是在 MySQL 5.0.1 中新增的。

mysql> SHOW CREATE VIEW v;
+-------+----------------------------------------------------+
| Table | Create Table                                       |
+-------+----------------------------------------------------+
| v     | CREATE VIEW `test`.`v` AS select 1 AS `a`,2 AS `b` |
+-------+----------------------------------------------------+

这个语法是在 MySQL 5.0.1 加上的。

14.5.3.8 SHOW DATABASES 语法

SHOW DATABASES [LIKE 'pattern']

SHOW DATABASES 列出了 MySQL 服务器上所有的数据库,通过 mysqlshow 命令也可以得到同样的结果。从 MySQL 4.0.2 开始,如果没有全局的 mysqlshow 权限的话,就只能列出那些有相关权限的数据库了。
如果服务器启动时增加参数 --skip-show-database,并且你没有 SHOW DATABASES 权限的话,就无法通过这个语句来列出数据库了。

14.5.3.9 SHOW ENGINES 语法

SHOW [STORAGE] ENGINES

SHOW ENGINES 显示了存储引擎相关的状态信息。这对检查是否支持某种存储引擎或者什么存储引擎是默认的非常有用。这个语句是在 MySQL 4.1.2 实现的。SHOW TABLE TYPES 跟它一样,但是不推荐使用。

mysql> SHOW ENGINES\G
*************************** 1. row ***************************
 Engine: MyISAM
Support: DEFAULT
Comment: Default engine as of MySQL 3.23 with great performance
*************************** 2. row ***************************
 Engine: HEAP
Support: YES
Comment: Alias for MEMORY
*************************** 3. row ***************************
 Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
*************************** 4. row ***************************
 Engine: MERGE
Support: YES
Comment: Collection of identical MyISAM tables
*************************** 5. row ***************************
 Engine: MRG_MYISAM
Support: YES
Comment: Alias for MERGE
*************************** 6. row ***************************
 Engine: ISAM
Support: NO
Comment: Obsolete storage engine, now replaced by MyISAM
*************************** 7. row ***************************
 Engine: MRG_ISAM
Support: NO
Comment: Obsolete storage engine, now replaced by MERGE
*************************** 8. row ***************************
 Engine: InnoDB
Support: YES
Comment: Supports transactions, row-level locking, and foreign keys
*************************** 9. row ***************************
 Engine: INNOBASE
Support: YES
Comment: Alias for INNODB
*************************** 10. row ***************************
 Engine: BDB
Support: YES
Comment: Supports transactions and page-level locking
*************************** 11. row ***************************
 Engine: BERKELEYDB
Support: YES
Comment: Alias for BDB
*************************** 12. row ***************************
 Engine: NDBCLUSTER
Support: YES
Comment: Clustered, fault-tolerant, memory-based tables
*************************** 13. row ***************************
 Engine: NDB
Support: YES
Comment: Alias for NDBCLUSTER
*************************** 14. row ***************************
 Engine: EXAMPLE
Support: YES
Comment: Example storage engine
*************************** 15. row ***************************
 Engine: ARCHIVE
Support: YES
Comment: Archive storage engine

Support 字段的值表明是否支持什么存储引擎和哪种存储引擎是默认的。例如,如果服务器启动时增加参数 --default-table-type=InnoDB,那么 InnoDB 这行的 Support 字段的值就是 DEFAULT

14.5.3.10 SHOW ERRORS 语法

SHOW ERRORS [LIMIT [offset,] row_count]
SHOW COUNT(*) ERRORS

这个语句跟 SHOW WARNINGS 类似,不同之处是 SHOW WARNINGS 同时显示了错误,警告以及注意,而它却只显示错误信息。SHOW ERRORS 是从 MySQL 4.1.0 开始有的。
LIMIT 分句和的 SELECT 语法一样,详情请看“14.1.7 SELECT Syntax”。
SHOW COUNT(*) ERRORS 语句显示了错误信息的总记录数。也可以通过取得变量 error_count 的值来获得总错误记录数:

SHOW COUNT(*) ERRORS;
SELECT @@error_count;

详情请看“14.5.3.21 SHOW WARNINGS Syntax”。

14.5.3.11 SHOW GRANTS 语法

SHOW GRANTS FOR user

该语句列出了某个 MySQL 帐户用 GRANT 语句授权的全部权限。

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

从 MySQL 4.1.2 开始,也可以使用以下几个语句之一来列出当前会话具备的权限:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

在 MySQL 4.1.2 以前,可以通过函数 CURRENT_USER() (MySQL 4.0.6 新增的 ) 的值来知道当前会话授权给哪个用户,并且把它的值用于 SHOW GRANTS 语句中。详情请看“13.8.3 Information Functions”。
SHOW GRANTS 是在 MySQL 3.23.4 中新增的。

14.5.3.12 SHOW INDEX 语法

SHOW INDEX FROM tbl_name [FROM db_name]

SHOW INDEX 很像 ODBC 的 SQLStatistics 调用,它按照一定的格式返回数据表的索引信息。
SHOW INDEX 返回以下字段:

Table
表名。
Non_unique
0 表示该索引不能有重复的记录,反之则反。
Key_name
索引名。

Seq_in_index
该字段在索引中的次序,从 1 开始。

Column_name
字段名。

Collation
字段在索引中是怎么排序的。在 MySQL 中,它的值可以是 `A' ( 升序 ) 或 NULL ( 无序 ) 。

Cardinality
该索引中唯一值的数量,当执行 ANALYZE TABLEmyisamchk -a. Cardinality 时会更新它的值。 Cardinality (基数) 是用整数存储的基于统计的结果,因此如果是小表,那么它的结果可能未必精确。基数越大,则 MySQL 在做表连接时使用索引的几率越大。

Sub_part
它表示某个字段对多长的字符做索引。当整个字段都做索引了,那么它的值是 NULL

Packed
表示键值是如何压缩的,NULL 表示没有压缩。

Null
当字段包括 NULL 的记录是 YES,它的值为,反之则是 ''

Index_type
使用了哪种索引算法(有BTREE, FULLTEXT, HASH, RTREE)。

Comment
各种不同的备注。在MySQL 4.0.2以前,如果增加了 Index_type 字段,则 Comment 字段用户表示该索引是为 FULLTEXT 索引。
字段 PackedComment 是在MySQL 3.23.0中新增的。而 NullIndex_type是在MySQL 4.0.2中新增的。
tbl_name FROM db_name 语法中,还可以选择是否使用 db_name.tbl_name 的格式。以下的这2个语句是一样的:
mysql> SHOW INDEX FROM mytable FROM mydb;
mysql> SHOW INDEX FROM mydb.mytable;

SHOW KEYSSHOW INDEX 是一样的,也可以通过执行 mysqlshow -k db_name tbl_name 命令来列出数据表的索引信息。

14.5.3.13 SHOW INNODB STATUS 语法

SHOW INNODB STATUS

它显示了 InnoDB 存储引擎状态的其他的扩展信息。

14.5.3.14 SHOW LOGS 语法

SHOW [BDB] LOGS

SHOW LOGS 显示了现存的日志文件的状态。它是在MySQL 3.23.29中实现的。现在它只显示了Berkeley DB类型的日志文件,因此它的另一个用法是SHOW LOGS(从MySQL 4.1.1开始)。
SHOW LOGS 返回了以下几个字段:

File
日志文件的完整路径。

Type
日志文件的类型(例如:BDB 表示Berkeley DB类型的日志文件)。

Status
文件状态(FREE 表示文件可以删除,IN USE 表示在事务子系统中需要用到该日志文件)。

14.5.3.15 SHOW PRIVILEGES 语法

SHOW PRIVILEGES

SHOW PRIVILEGES 列出了所有MySQL基本服务器所支持的权限。它是在MySQL 4.1.0中实现的。

mysql> SHOW PRIVILEGES\G
*************************** 1. row ***************************
Privilege: Select
  Context: Tables
  Comment: To retrieve rows from table
*************************** 2. row ***************************
Privilege: Insert
  Context: Tables
  Comment: To insert data into tables
*************************** 3. row ***************************
Privilege: Update
  Context: Tables
  Comment: To update existing rows
*************************** 4. row ***************************
Privilege: Delete
  Context: Tables
  Comment: To delete existing rows
*************************** 5. row ***************************
Privilege: Index
  Context: Tables
  Comment: To create or drop indexes
*************************** 6. row ***************************
Privilege: Alter
  Context: Tables
  Comment: To alter the table
*************************** 7. row ***************************
Privilege: Create
  Context: Databases,Tables,Indexes
  Comment: To create new databases and tables
*************************** 8. row ***************************
Privilege: Drop
  Context: Databases,Tables
  Comment: To drop databases and tables
*************************** 9. row ***************************
Privilege: Grant
  Context: Databases,Tables
  Comment: To give to other users those privileges you possess
*************************** 10. row ***************************
Privilege: References
  Context: Databases,Tables
  Comment: To have references on tables
*************************** 11. row ***************************
Privilege: Reload
  Context: Server Admin
  Comment: To reload or refresh tables, logs and privileges
*************************** 12. row ***************************
Privilege: Shutdown
  Context: Server Admin
  Comment: To shutdown the server
*************************** 13. row ***************************
Privilege: Process
  Context: Server Admin
  Comment: To view the plain text of currently executing queries
*************************** 14. row ***************************
Privilege: File
  Context: File access on server
  Comment: To read and write files on the server


技术相关: