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.37 节,“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 indicates the column name, Type is the data type for the column, NULL indicates whether the column can contain NULL values, Key indicates whether the column is indexed, and Default specifies the column's default value. Extra displays special information about columns: If a column was created with the AUTO_INCREMENT option, the value is auto_increment rather than empty.

DESC is a short form of DESCRIBE. See Section 13.8.1, “DESCRIBE Statement”, for more information.

You can obtain the CREATE TABLE statement necessary to create an existing table using the SHOW CREATE TABLE statement. See Section 13.7.5.10, “SHOW CREATE TABLE Statement”.

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