文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  SHOW COLUMNS 语句

15.7.7.6 SHOW COLUMNS 语句

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 子句可以用来使用更通用的条件选择行,如 第 28.8 节,“SHOW 语句扩展” 中所述。

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

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

  • Field

    列的名称。

  • Type

    列的数据类型。

  • Collation

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

  • Null

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

  • Key

    列是否被索引

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

    • 如果 KeyPRI,则该列为 PRIMARY KEY 或多列 PRIMARY KEY 中的一列。

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

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

    如果多个 Key 值适用于表的给定列,则 Key 将显示优先级最高的那个,顺序为 PRIUNIMUL

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

  • Default

    列的默认值。 如果该列具有显式的 NULL 默认值,或者列定义不包含 DEFAULT 子句,则此值为 NULL

  • Extra

    有关给定列的任何其他可用信息。 在以下情况下,此值非空

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

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

    • VIRTUAL GENERATEDSTORED GENERATED 用于生成列。

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

  • Privileges

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

  • Comment

    列定义中包含的任何注释。 仅当您使用 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 节,“生成不可见主键”