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_namedb_name.tbl_name
SHOW COLUMNS FROM mytableFROM mydb;SHOW COLUMNS FROM mydb.mytable;
可选EXTENDED关键字使输出包含有关MySQL内部使用的隐藏列的信息,用户无法访问这些隐藏列。
可选FULL关键字使输出包含列排序规则和注释,以及每列的特权。
该LIKE子句(如果存在)指示要匹配的列名称。的WHERE条款可以给出使用更一般的条件来选择行,如在讨论第25.48,“扩展到SHOW语句”。
数据类型可能与您期望基于CREATE TABLE语句的数据类型有所不同,因为在创建或更改表时,MySQL有时会更改数据类型。“静默色谱柱规格变更”中描述了发生这种情况的条件。
SHOW COLUMNS为每个表列显示以下值:
Field列的名称。
Type列数据类型。
Collation非二进制字符串列或
NULL其他列的排序规则。仅当您使用FULL关键字时,才显示此值。Null列的可空性。值是
YES是否NULL可以将值存储在列中(NO如果不能)。Key列是否被索引:
- 如果
Key为空,则该列要么不被索引,要么仅被索引为多列非唯一索引中的第二列。 - 如果
Key为isPRI,PRIMARY KEY则列为a 或为多列中的列之一PRIMARY KEY。 - 如果
Key为UNI,则该列为UNIQUE索引的第一列。(UNIQUE索引允许使用多个NULL值,但是您可以NULL通过检查Null字段来判断该列是否允许使用。) - 如果
Key为isMUL,则该列是非唯一索引的第一列,在该列中允许多次出现给定值。
如果超过一个
Key值适用于表中给定的列,Key显示一个具有最高优先级,顺序PRI,UNI,MUL。甲
UNIQUE索引可被显示为PRI,如果它不能包含NULL值并没有PRIMARY KEY在表中。甲UNIQUE索引可能会显示为MUL如果若干列形成复合UNIQUE索引;尽管各列的组合是唯一的,但各列仍可以容纳多次出现的给定值。- 如果
Default列的默认值。这是
NULL如果列有一个明确的默认NULL,或者如果列定义不包括DEFAULT条款。Extra有关给定列的任何其他可用信息。在以下情况下,该值是非空的:
auto_increment具有AUTO_INCREMENT属性的列。on update CURRENT_TIMESTAMP对于TIMESTAMP或DATETIME有列ON UPDATE CURRENT_TIMESTAMP属性。VIRTUAL GENERATED或VIRTUAL STORED用于生成的列。DEFAULT_GENERATED对于具有表达式默认值的列。
Privileges您具有该列的特权。仅当您使用
FULL关键字时,才显示此值。Comment列定义中包含的任何注释。仅当您使用
FULL关键字时,才显示此值。
表列信息也可从INFORMATION_SCHEMACOLUMNS表中获得。请参见“ INFORMATION_SCHEMA列表”。有关隐藏列的扩展信息仅可使用SHOW EXTENDED COLUMNS;它不能从COLUMNS表中获得。
您可以使用mysqlshow db_nametbl_name命令列出表的列。
该DESCRIBE语句提供的信息类似于SHOW COLUMNS。请参见“ DESCRIBE语句”。
SHOW CREATE TABLE,SHOW TABLE STATUS和SHOW INDEX语句也可以提供有关表的信息。请参见“ SHOW语句”。
