该COLUMNS
表提供有关表中列的信息。
该COLUMNS
表有以下列:
TABLE_CATALOG
包含该列的表所属目录的名称。该值始终为
def
.TABLE_SCHEMA
包含该列的表所属的模式(数据库)的名称。
TABLE_NAME
包含该列的表的名称。
COLUMN_NAME
列的名称。
ORDINAL_POSITION
列在表中的位置。
ORDINAL_POSITION
是必要的,因为你可能想说ORDER BY ORDINAL_POSITION
。与 不同SHOW COLUMNS
,SELECT
fromCOLUMNS
表没有自动排序。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
有关给定列的任何其他可用信息。在这些情况下该值是非空的:
auto_increment
对于具有AUTO_INCREMENT
属性的列;on update CURRENT_TIMESTAMP
forTIMESTAMP
或DATETIME
具有ON UPDATE CURRENT_TIMESTAMP
属性的列。PRIVILEGES
您对该列拥有的权限。
COLUMN_COMMENT
列定义中包含的任何注释。
笔记
在
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.6 节,“显示列语句”。下面的语句几乎是等价的:
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']