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

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

    1. mysql> SELECT DATABASE();
    2. +------------+
    3. | DATABASE() |
    4. +------------+
    5. | menagerie |
    6. +------------+

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

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

    1. mysql> SHOW TABLES;
    2. +---------------------+
    3. | Tables_in_menagerie |
    4. +---------------------+
    5. | event |
    6. | pet |
    7. +---------------------+

    此语句生成的输出中的列名称始终为 Tables_in_db_name,其中 db_name 是数据库的名称。

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

    1. mysql> DESCRIBE pet;
    2. +---------+-------------+------+-----+---------+-------+
    3. | Field | Type | Null | Key | Default | Extra |
    4. +---------+-------------+------+-----+---------+-------+
    5. | name | varchar(20) | YES | | NULL | |
    6. | owner | varchar(20) | YES | | NULL | |
    7. | species | varchar(20) | YES | | NULL | |
    8. | sex | char(1) | YES | | NULL | |
    9. | birth | date | YES | | NULL | |
    10. | death | date | YES | | NULL | |
    11. +---------+-------------+------+-----+---------+-------+

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

    DESC 是 DESCRIBE 的缩写形式。

    您可以使用 SHOW CREATE TABLE 语句获取创建现有表所需的 CREATE TABLE 语句。

    如果表上有索引,SHOW INDEX FROM tbl_name 会生成有关它们的信息。