文档首页
MySQL 9.0 参考手册
相关文档 下载本手册

MySQL 9.0 参考手册  /  ...  /  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 语句的扩展” 中所述。

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

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

  • 字段

    列的名称。

  • 类型

    列数据类型。

  • 排序规则

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

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

  • 列是否被索引

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

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

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

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

    如果多个 Key 值应用于表的给定列,则 Key 会显示优先级最高的那个,按照 PRIUNIMUL 的顺序。

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

  • 默认值

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

  • 额外

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

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

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

    • 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 节“生成不可见主键”