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

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

您之前已经看过SHOW DATABASES,其中列出了服务器 Management 的数据库。要找出当前选择的数据库,请使用DATABASE()函数:

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

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

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

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

该语句产生的输出中的列名称始终为Tables_in_db_name,其中* db_name *是数据库的名称。有关更多信息,请参见第 13.7.5.37 节“ SHOW TABLES 语句”

如果要查找 table 的结构,则DESCRIBE语句很有用;它显示有关 table 的每个列的信息:

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    |       |
+---------+-------------+------+-----+---------+-------+

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

DESCDESCRIBE的缩写。有关更多信息,请参见第 13.8.1 节“ DESCRIBE 语句”

您可以使用显示创建 table语句获得创建现有 table 所需的CREATE TABLE语句。参见第 13.7.5.10 节“ SHOW CREATE TABLE 语句”

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