Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

15.7.7.6 显示列语句

SHOW [EXTENDED] [FULL] {COLUMNS | FIELDS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [LIKE 'pattern' | WHERE expr]

显示列 显示给定表中的列信息。它也适用于视图。显示列 只显示您拥有某些权限的列的信息。

mysql> SHOW COLUMNS FROM City;
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| ID          | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name        | char(35) | NO   |     |         |                |
| CountryCode | char(3)  | NO   | MUL |         |                |
| District    | char(20) | NO   |     |         |                |
| Population  | int(11)  | NO   |     | 0       |                |
+-------------+----------+------+-----+---------+----------------+

替代 tbl_name FROM db_name 语法是 db_name.tbl_name。这两个语句是等效的:

SHOW COLUMNS FROM mytable FROM mydb;
SHOW COLUMNS FROM mydb.mytable;

可选的 EXTENDED 关键字使输出包括 MySQL 内部使用的隐藏列信息,这些列对用户不可访问。

可选的 FULL 关键字使输出包括列排序和注释,以及每个列的权限。

如果存在,LIKE 子句指定要匹配的列名。WHERE 子句可以用于使用更通用的条件选择行,如 第 28.8 节,“SHOW 语句扩展” 中所述。

数据类型可能与您期望的 CREATE TABLE 语句不同,因为 MySQL 有时会在创建或修改表时更改数据类型。这些情况在 第 15.1.20.7 节,“静默列规范更改” 中有所描述。

显示列 显示每个表列的以下值:

  • 字段

    列的名称。

  • 类型

    列的数据类型。

  • 排序

    非二进制字符串列的排序,或者其他列的 NULL。只有在使用 FULL 关键字时才显示该值。

  • 列的可空性。如果可以在列中存储 NULL 值,则该值为 YES,否则为 NO

  • 该列是否被索引:

    • 如果 为空,则该列不是索引列,或者是多列非唯一索引的次要列。

    • 如果 PRI,则该列是 PRIMARY KEY 或是多列 PRIMARY KEY 的一列。

    • 如果 UNI,则该列是唯一索引的第一列。(唯一索引允许多个 NULL 值,但您可以通过检查 字段来确定该列是否允许 NULL 值。)

    • 如果 MUL,则该列是非唯一索引的第一列,在该列中允许多个给定值的出现。

    如果某个表的某列满足多个 值,则 显示优先级最高的那个,按照 PRIUNIMUL 的顺序。

    唯一索引可能显示为 PRI,如果它不能包含 NULL 值且表中没有 PRIMARY KEY。唯一索引可能显示为 MUL,如果多个列组成一个复合唯一索引;尽管该组合是唯一的,但每个列仍可以包含多个给定值的出现。

  • 默认

    该列的默认值。如果该列的默认值是 NULL,或者该列定义中没有 DEFAULT 子句,则该值为 NULL

  • 额外

    关于该列的任何其他可用信息。该值非空时,以下情况成立:

    • auto_increment 对于具有 AUTO_INCREMENT 属性的列。

    • 在更新时 CURRENT_TIMESTAMP 用于 TIMESTAMPDATETIME 列,具有 ON UPDATE CURRENT_TIMESTAMP 属性。

    • VIRTUAL GENERATEDSTORED GENERATED 用于生成的列。

    • DEFAULT_GENERATED 用于具有默认表达式值的列。

  • 权限

    您对该列的权限。该值仅在使用 FULL 关键字时显示。

  • 注释

    列定义中的任何注释。该值仅在使用 FULL 关键字时显示。

表列信息也可以从 INFORMATION_SCHEMA COLUMNS 表中获得。见 第 28.3.8 节,“INFORMATION_SCHEMA COLUMNS 表”。扩展的隐藏列信息仅可以使用 SHOW EXTENDED COLUMNS 获得;无法从 COLUMNS 表中获得。

您可以使用 mysqlshow db_name tbl_name 命令列出表的列。

DESCRIBE 语句提供了类似于 SHOW COLUMNS 的信息。见 第 15.8.1 节,“DESCRIBE 语句”

SHOW CREATE TABLESHOW TABLE STATUSSHOW INDEX 语句也提供了关于表的信息。见 第 15.7.7 节,“SHOW 语句”

SHOW COLUMNS 包括表的生成的不可见主键,如果它有一个,默认情况下。您可以通过设置 show_gipk_in_create_table_and_information_schema = OFF 来抑制该信息在语句的输出中。有关更多信息,请参阅 第 15.1.20.11 节,“生成的不可见主键”