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,并且在Collation列中看到为latin1_swedish_ci的值,则该字符集是第一个下划线之前的内容,即latin1。
GENERATION_EXPRESSION对于生成的列是非空的,它的值为用于计算列值的表达式。有关生成列的信息,请参见MySQL文档中第13.1.18.8节“创建表和生成的列”。
EXTRA列包含生成列的VIRTUAL GENERATED或VIRTUAL STORED。
参考文献
The INFORMATION_SCHEMA COLUMNS Table
请问字段的NumericScale属性和Precision属性到底是指什么?
What is the point of the TABLE_CATALOG column in INFORMATION_SCHEMA.TABLES?