该COLUMNS表提供有关表中列的信息。
该COLUMNS表有以下列:
TABLE_CATALOG包含该列的表所属目录的名称。该值始终为
def.TABLE_SCHEMA包含该列的表所属的模式(数据库)的名称。
TABLE_NAME包含该列的表的名称。
COLUMN_NAME列的名称。
ORDINAL_POSITION列在表中的位置。
ORDINAL_POSITION是必要的,因为你可能想说ORDER BY ORDINAL_POSITION。与 不同SHOW COLUMNS,SELECTfromCOLUMNS表没有自动排序。COLUMN_DEFAULT列的默认值。这是
NULL如果列具有显式默认值NULL,或者如果列定义不包含任何DEFAULT子句。IS_NULLABLE列的可空性。该值是值
YES是否NULL可以存储在列中,NO如果不是。DATA_TYPE列数据类型。
该
DATA_TYPE值只是类型名称,没有其他信息。该COLUMN_TYPE值包含类型名称和可能的其他信息,例如精度或长度。CHARACTER_MAXIMUM_LENGTH对于字符串列,以字符为单位的最大长度。
CHARACTER_OCTET_LENGTH对于字符串列,最大长度(以字节为单位)。
NUMERIC_PRECISION对于数字列,数字精度。
NUMERIC_SCALE对于数字列,数字刻度。
DATETIME_PRECISION对于时间列,小数秒精度。
CHARACTER_SET_NAME对于字符串列,字符集名称。
COLLATION_NAME对于字符串列,排序规则名称。
COLUMN_TYPE列数据类型。
该
DATA_TYPE值只是类型名称,没有其他信息。该COLUMN_TYPE值包含类型名称和可能的其他信息,例如精度或长度。COLUMN_KEY该列是否被索引:
如果
COLUMN_KEY为空,则该列未编制索引或仅作为多列非唯一索引中的辅助列编制索引。如果
COLUMN_KEY是PRI,则该列是一个PRIMARY KEY或是多列中的列之一PRIMARY KEY。如果
COLUMN_KEY是UNI,则该列是UNIQUE索引的第一列。(UNIQUE索引允许多个NULL值,但您可以NULL通过检查Null列来判断该列是否允许。)如果
COLUMN_KEY是MUL,则该列是非唯一索引的第一列,在该索引中允许在该列中多次出现给定值。
如果多个
COLUMN_KEY值应用于表的给定列,COLUMN_KEY则显示具有最高优先级的值,顺序为PRI,UNI,MUL。UNIQUE索引可能显示为 好像PRI它不能包含NULL值并且PRIMARY KEY表中没有。一个UNIQUE索引可能显示为MUL多个列组成一个复合UNIQUE索引;尽管列的组合是唯一的,但每一列仍然可以包含多次出现的给定值。EXTRA有关给定列的任何其他可用信息。在这些情况下该值是非空的:
PRIVILEGES您对该列拥有的权限。
COLUMN_COMMENT列定义中包含的任何注释。
GENERATION_EXPRESSION对于生成的列,显示用于计算列值的表达式。对于非生成列为空。有关生成的列的信息,请参阅 第 13.1.18.7 节,“CREATE TABLE 和生成的列”。
笔记
在
SHOW COLUMNS中,Type显示包括来自几个不同COLUMNS列的值。CHARACTER_OCTET_LENGTH应与 相同CHARACTER_MAXIMUM_LENGTH,但多字节字符集除外。CHARACTER_SET_NAME可以从 派生COLLATION_NAME。例如,如果您说SHOW FULL COLUMNS FROM t,并且您在COLLATION_NAME列中看到值latin1_swedish_ci,则字符集是第一个下划线之前的字符集:latin1。
列信息也可从
SHOW COLUMNS语句中获得。请参阅
第 13.7.5.5 节,“显示列语句”。下面的语句几乎是等价的:
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
[AND column_name LIKE 'wild']
SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']