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_name
db_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_SCHEMA
COLUMNS
表中获取。见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节,“生成不可见主键”。