Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.7.6 显示列语句

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

SHOW COLUMNS 显示指定表中的列信息。它也适用于视图。SHOW COLUMNS 只显示您有权限的列信息。

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 子句可以用于选择行,使用更通用的条件,如 Section 28.8, “Extensions to SHOW Statements” 中所述。

数据类型可能与您期望的不同,因为 MySQL 在创建或更改表时可能会更改数据类型。这种情况的条件在 Section 15.1.20.7, “Silent Column Specification Changes” 中有描述。

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

  • Field

    列的名称。

  • Type

    列的数据类型。

  • Collation

    非二进制字符串列的排序规则,或者 NULL 对于其他列。这一值仅在使用 FULL 关键字时显示。

  • Null

    列的可空性。值为 YES 表示可以存储 NULL 值,值为 NO 表示不能。

  • Key

    列是否索引:

    • 如果 Key为空,列可能不是索引或是多列非唯一索引的次要列。

    • 如果 KeyPRI,列是 PRIMARY KEY 或是多列 PRIMARY KEY 的一部分。

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

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

    如果一个表中的多个Key值适用于某一列,Key将显示优先级最高的那个,在顺序中是PRIUNIMUL

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

  • Default

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

  • Extra

    关于某一列的任何额外信息。该值在以下情况下非空:

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

    • on update CURRENT_TIMESTAMP,对于TIMESTAMPDATETIME列具有ON UPDATE CURRENT_TIMESTAMP属性的列。

    • VIRTUAL GENERATEDSTORED GENERATED,对于生成列。

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

  • Privileges

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

  • Comment

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

关于表列信息也可以从INFORMATION_SCHEMACOLUMNS表中获取。见Section 28.3.8,“The INFORMATION_SCHEMA COLUMNS Table”。关于隐藏列的扩展信息只能使用SHOW EXTENDED COLUMNS,不能从COLUMNS表中获取。

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

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

SHOW CREATE TABLE、SHOW TABLE STATUS和SHOW INDEX语句也提供了关于表的信息。请参见第15.7.7节,“SHOW语句”

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