「COLUMNS」

COLUMNS,该表提供了表中列的信息。

INFORMATION_SCHEMA Name SHOW Name Remarks 说明
TABLE_SCHEMA     所在的数据库的库名
TABLE_NAME     所在的表的表名
TABLE_CATALOG   def 该列的值总是def
PRIVILEGES Privileges MySQL extension 权限(SELECT)
ORDINAL_POSITION   see notes 列在表中的顺序
NUMERIC_SCALE Type   小数点后的位数
NUMERIC_PRECISION Type   数字值的精度
IS_NULLABLE Null   是否可以为空
GENERATION_EXPRESSION   MySQL extension 生成列时使用的表达式。GENERATION_EXPRESSION对于生成的列是非空的,并显示出用于用于计算列值的表达式
EXTRA Extra MySQL extension 附加数据(比如:auto_increment)
DATETIME_PRECISION Type   日期精度
DATA_TYPE Type   数据类型(TINYINT、INT、TIMESTAMP)
COLUMN_TYPE Type MySQL extension 列的类型(比如:`tinyint(3) unsigned’、`int(10) unsigned’)
COLUMN_NAME Field   列名
COLUMN_KEY Key MySQL extension KEY的类型(比如:PRI,主键约束;UNI,唯一约束;MUL,可以重复的KEY。)
COLUMN_DEFAULT Default   列的默认值
COLUMN_COMMENT Comment MySQL extension 列注释
COLLATION_NAME Collation   排序规则
CHARACTER_SET_NAME     字符集名称
CHARACTER_OCTET_LENGTH     字符八进制长度
CHARACTER_MAXIMUM_LENGTH Type   字符最大长度(比如:32、64)

以下的两个语句是等价的:

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’]

注意事项

在SHOW Name列中TYPE,表示在SHOW语句输出的TYPE列的值 = INFORMATION_SCHEMA Name中几个不同列的值的组合;
ORDINAL_POSITION是必要的,因为有时可能需要执行ORDER BY ORDINAL_POSITION来排序。SELECT时,列的顺序是没有自动排序的,这点与与SHOW不同;
CHARACTER_OCTET_LENGTH应与CHARACTER_MAXIMUM_LENGTH相同,但多字节字符集除外;
CHARACTER_SET_NAME可以从Collation中派生。例如,如果执行SHOW FULL COLUMNS FROM t,并且在Collat​​ion列中看到为latin1_swedish_ci的值,则该字符集是第一个下划线之前的内容,即latin1。
GENERATION_EXPRESSION对于生成的列是非空的,它的值为用于计算列值的表达式。有关生成列的信息,请参见MySQL文档中第13.1.18.8节“创建表和生成的列”。
EXTRA列包含生成列的VIRTUAL GENERATEDVIRTUAL STORED

参考文献

The INFORMATION_SCHEMA COLUMNS Table
请问字段的NumericScale属性和Precision属性到底是指什么?
What is the point of the TABLE_CATALOG column in INFORMATION_SCHEMA.TABLES?