13.7.5.5 SHOW COLUMNS 语句

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

SHOW COLUMNS显示有关给定 table 中列的信息。它也适用于视图。 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;

可选的FULL关键字使输出包含列排序规则和 Comments,以及每列的特权。

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

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

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

  • Field

列名。

  • Type

列数据类型。

  • Collation

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

  • Null

列的可空性。如果可以将NULL个值存储在列中,则值为YES,否则不能为NO

  • Key

列是否被索引:

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

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

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

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

如果多个Key值应用于 table 的给定列,则KeyPRIUNIMUL的 Sequences 显示优先级最高的那个。

如果UNIQUE索引不能包含NULL值并且 table 中没有PRIMARY KEY,则它可能显示为PRI。如果几列构成复合UNIQUE索引,则UNIQUE索引可能显示为MUL;尽管各列的组合是唯一的,但各列仍可以容纳多次出现的给定值。

  • Default

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

  • Extra

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

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

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

    • VIRTUAL GENERATEDVIRTUAL STORED用于生成的列。

  • Privileges

您具有该列的特权。仅当您使用FULL关键字时,才显示此值。

  • Comment

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

table 列信息也可从INFORMATION_SCHEMA COLUMNStable 中获得。参见第 24.5 节“ INFORMATION_SCHEMA COLUMNStable”

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

DESCRIBE语句提供的信息类似于SHOW COLUMNS。参见第 13.8.1 节“ DESCRIBE 语句”

显示创建 table显示 table 格状态SHOW INDEX语句还提供有关 table 的信息。参见第 13.7.5 节“ SHOW 语句”