Documentation Home

13.7.7.5 显示列语句

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_namedb_name.tbl_name

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

optionalEXTENDED关键字导致输出包含有关 MySQL 内部使用且用户无法访问的隐藏列的信息。

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

LIKE子句(如果存在)指示要匹配的列名。该 WHERE子句可以使用更一般的条件来选择行,如 第 26.8 节,“SHOW 语句的扩展”中所讨论的。

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

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

  • Field

    列的名称。

  • Type

    列数据类型。

  • Collation

    NULL非二进制字符串列或其他列 的排序规则 。FULL 仅当您使用关键字 时才会显示此值。

  • Null

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

  • Key

    该列是否被索引:

    • 如果Key为空,则该列未编制索引或仅作为多列非唯一索引中的辅助列编制索引。

    • 如果KeyPRI,则该列是一个PRIMARY KEY或是多列中的列之一PRIMARY KEY

    • 如果KeyUNI,则该列是 UNIQUE索引的第一列。( UNIQUE索引允许多个 值,但您可以通过检查字段NULL来判断该列是否允许。) NULLNull

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

    如果多个Key值应用于表的给定列,Key 则显示具有最高优先级的值,顺序为 PRI, UNI, MUL

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

  • Default

    列的默认值。这是 NULL如果列具有显式默认值NULL,或者如果列定义不包含任何DEFAULT子句。

  • Extra

    有关给定列的任何其他可用信息。在这些情况下该值是非空的:

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

    • on update CURRENT_TIMESTAMPfor TIMESTAMPDATETIME具有ON UPDATE CURRENT_TIMESTAMP 属性的列。

    • VIRTUAL GENERATEDSTORED GENERATED生成的列。

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

  • Privileges

    您对该列拥有的权限。FULL 仅当您使用关键字 时才会显示此值。

  • Comment

    列定义中包含的任何注释。FULL 仅当您使用关键字 时才会显示此值。

表格列信息也可从 INFORMATION_SCHEMA COLUMNS表格中获得。请参阅 第 26.3.8 节,“INFORMATION_SCHEMA COLUMNS 表”。有关隐藏列的扩展信息只能使用 SHOW EXTENDED COLUMNS; 它不能从COLUMNS表中获得。

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

DESCRIBE声明提供的信息类似于SHOW COLUMNS。请参阅第 13.8.1 节,“DESCRIBE 语句”

SHOW CREATE TABLE和 语句还提供有关表的信息SHOW TABLE STATUSSHOW INDEX请参阅第 13.7.7 节,“SHOW 语句”

在 MySQL 8.0.30 及更高版本中,SHOW COLUMNS 默认情况下包括表生成的不可见主键(如果有的话)。您可以通过设置 使该信息在语句的输出中被抑制 show_gipk_in_create_table_and_information_schema = OFF。有关详细信息,请参阅 第 13.1.20.11 节,“生成的不可见主键”