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_namedb_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为空,列可能不是索引或是多列非唯一索引的次要列。 -
如果
Key是PRI,列是PRIMARY KEY或是多列PRIMARY KEY的一部分。 -
如果
Key为UNI,该列是唯一索引的第一列。 (一个UNIQUE索引允许多个NULL值,但是可以通过检查Null字段来确定该列是否允许NULL值。) -
如果
Key为MUL,该列是非唯一索引的第一列,其中允许在该列中出现多个给定的值。
如果一个表中的多个
Key值适用于某一列,Key将显示优先级最高的那个,在顺序中是PRI、UNI、MUL。一个唯一索引可能显示为
PRI,如果它不能包含NULL值,并且该表中没有PRIMARY KEY。一个唯一索引可能显示为MUL,如果几个列组成一个唯一索引;虽然这些列的组合是唯一的,但是每个列仍然可以出现多个给定的值。 -
-
Default该列的默认值。这是
NULL,如果该列有显式的NULL默认值,或者该列定义中没有DEFAULT子句。 -
Extra关于某一列的任何额外信息。该值在以下情况下非空:
-
auto_increment,对于具有AUTO_INCREMENT属性的列。 -
on update CURRENT_TIMESTAMP,对于TIMESTAMP或DATETIME列具有ON UPDATE CURRENT_TIMESTAMP属性的列。 -
VIRTUAL GENERATED或STORED 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节,“生成不可见主键”。