在 MySQL 中使用 DESC 查看一个表的所有的列

在 MySQL 中,DESC 语句用来显示一个表的所有的列的信息。

有时候,您或许想查看一个表中的所有列的信息。MySQL 提供了两个命令帮你完成此操作:

  1. 使用 DESC 语句列出表中的列
  2. 使用 SHOW COLUMNS 语句列出表中的列

MySQL DESC 语句是 SHOW COLUMNS 的简化形式,本文主要说明 DESC 语句的用法。

MySQL DESC 用法

要显示一个表的所有的列,请按照如下方法使用 DESC 语句:

DESC [database_name.]table_name

这里,

  • database_name 是数据库的名字。当你已经选择了一个数据库作为默认数据库时, database_name. 是可以省略的。
  • table_name 是表的名字。

您也可以使用 DESCRIBE 代替 DESCDESCDESCRIBE 的缩写,他们完全一样。

如果您没有指定默认数据库,又省略了数据库名字,MySQL 将会返回一个错误: ERROR 1046 (3D000): No database selected。

返回的列

MySQL DESC 语句返回 6 个列:

Field
此列的名称
Type
此列的数据类型
Null
YES 或者 NO 指示此列是否可以为 NULL
Key
此列的索引定义
Default
此列的默认值
Extra
其他的额外信息。比如 auto_increment 等。

MySQL DESC 实例

以下实例显示如何使用 DESC 语句列出来自 Sakila 示例数据库中的表 actor 表中的列。

  1. 使用 mysql 客户端工具连接到 MySQL 服务器:

    mysql -u root -p
    

    输入 root 帐户的密码并按 Enter

    Enter password: ********
    
  2. 直接运行下面的命令尝试列出所有的表:

    DESC actor;
    

    此时,MySQL 会返回一个错误:ERROR 1046 (3D000): No database selected 。 因为您还未指定默认的数据库。

  3. DESC 语句中指定数据库和表名:

    DESC sakila.actor;
    

    下面是输出:

    +-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
    | Field       | Type              | Null | Key | Default           | Extra                                         |
    +-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
    | actor_id    | smallint unsigned | NO   | PRI | NULL              | auto_increment                                |
    | first_name  | varchar(45)       | NO   |     | NULL              |                                               |
    | last_name   | varchar(45)       | NO   | MUL | NULL              |                                               |
    | last_update | timestamp         | NO   |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
    +-------------+-------------------+------+-----+-------------------+-----------------------------------------------+
  4. 使用 USE 命令设置默认的数据库:

    USE sakila;
    
  5. 直接运行下面的命令尝试列出所有的表:

    DESC actor;
    

    此时, 此命令的输出和上面的命令 DESC sakila.actor; 相同。这是因为此时的默认数据库是 sakila

结论

在本文中,您学习了在 MySQL 中如何使用 DESC 语句列出一个表的所有的列。 DESC 语句是 SHOW COLUMNS 的快捷命令。如果您想对结果进行过滤或者显示更多的信息,请使用 SHOW COLUMNS 语句列出表的列