MySQL 8.0 参考手册  / 第 3 章教程  /  3.4 获取有关数据库和表的信息

3.4 获取有关数据库和表的信息

如果您忘记了数据库或表的名称,或者给定表的结构是什么(例如,它的列叫什么)怎么办?MySQL 通过提供有关它支持的数据库和表的信息的几个语句来解决这个问题。

您之前已经看到SHOW DATABASES,其中列出了服务器管理的数据库。要找出当前选择了哪个数据库,请使用以下 DATABASE()函数:

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie  |
+------------+

如果您尚未选择任何数据库,则结果为 NULL

要找出默认数据库包含哪些表(例如,当您不确定表名时),请使用以下语句:

mysql> SHOW TABLES;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| event               |
| pet                 |
+---------------------+

此语句生成的输出中列的名称始终为 ,其中是数据库的名称。有关详细信息,请参阅第 13.7.5.38 节,“SHOW TABLES 语句”Tables_in_db_namedb_name

如果你想了解一个表的结构, DESCRIBE语句是有用的;它显示有关表的每个列的信息:

mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

Field表示列名, Type是该列的数据类型, NULL表示该列是否可以包含 NULL值,Key表示该列是否被索引,并Default 指定该列的默认值。Extra 显示有关列的特殊信息:如果列是使用该AUTO_INCREMENT选项创建的,则该值auto_increment不是空的。

DESC是 的缩写形式 DESCRIBE。有关更多信息,请参阅 第 13.8.1 节,“DESCRIBE 语句”

您可以获得CREATE TABLE 使用该语句创建现有表所需的 SHOW CREATE TABLE语句。参见 第 13.7.5.12 节,“SHOW CREATE TABLE 语句”

如果您在表上有索引,则生成有关它们的信息。有关此语句的更多信息,请参阅第 13.7.5.23 节,“SHOW INDEX 语句”SHOW INDEX FROM tbl_name