-
5. MySQL information_schema详解 COLUMNS
columns
-
-
Attachments
-
Changes
-
View Source
-
View
这个专题主要讲information_schema数据库下的一些表
如无特殊说明数据库版本为MySQL 5.7.26
## 1. COLUMNS
该表显示表中列的信息
有如下栏位
- TABLE_CATALOG 包含列的表所属的目录的名称,该值总是def
- TABLE_SCHEMA 包含列的表所属的数据库的名称。
- TABLE_NAME 包含列的表名
- COLUMN_NAME 列名
- ORDINAL_POSITION 该列在表中的位置
- COLUMN_DEFAULT 列的默认值,如果未定义或者显式的指定为NULL,则该值为NULL
- IS_NULLABLE 该列是否为空(YES/NO)
- DATA_TYPE 列的数据类型,不包含其他信息,如数据类型的精度
- CHARACTER_MAXIMUM_LENGTH 字符串类型的列的最大长度,字符为单位
- CHARACTER_OCTET_LENGTH 字符串类型的列的最大长度,字符为字节
- NUMERIC_PRECISION number类型的列的精度
- NUMERIC_SCALE number类型的列的scale
- DATETIME_PRECISION 对于日期类型的列的分数秒精度
- CHARACTER_SET_NAME 对于字符串的列,其字符集的名称
- COLLATION_NAME 对于字符串的列,其排序规则的名称
- COLUMN_TYPE列的数据类型,除了类型外可能包含其他信息,例如精度等
- COLUMN_KEY 该列是否被索引
- EXTRA 列的其他一些信息
- PRIVILEGES 你对该列所拥有的权限
- COLUMN_COMMENT 列的注释
- GENERATION_EXPRESSION 如果是生成列,这里显示用来继续其值的表达式,否则为空
接下来对上面的一些栏位做进一步的介绍
### 1.1 COLUMN_KEY
该列显示列是否被索引,其有如下可能值
- 空 代表没有被索引,或者是一个多列的非唯一的索引的次要列
- PRI 代表是主键,或者是一个多列主键的其中一个栏位
- UNI 代表是一个唯一索引的第一个列,一个唯一索引是可以有多个空值的
- MUL 代表该列是一个非唯一索引的第一个列
如果一个栏位在多个索引中,COLUMN_KEY只会显示其中优先级最高的一个,顺序为
PRI, UNI, MUL
如果表中无主键,如果一个唯一索引不可以包含空值(定义非空),该列其可能会被显示为PRI
一个复合索引如果是唯一的,该列也有可能会被显示为MUL
### 1.2 **EXTRA**
该列用于显示额外的信息
- auto_increment 代表该列有AUTO_INCREMENT属性
- on update 对于TIMESTAMP 或 DATETIME类型的列,CURRENT_TIMESTAMP有ON UPDATE CURRENT_TIMESTAMP属性
- VIRTUAL GENERATED 或者 VIRTUAL STORED 对于生成列的一些信息
------------------------------
## 2. 实际截图
```
SELECT * FROM INFORMATION_SCHEMA.COLUMNS\G
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE
table_name = 'innodb_table' AND table_schema = 'test' \G
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'innodb_table' AND table_schema = 'test';
```
[image:807 size:orig]
或者
```
SHOW COLUMNS from innodb_table from test ;
```
show 命令只显示该表中一些栏位
第一个from后是表名,第二from后是数据库名称
也可使用如下命令显示更多栏位
```
SHOW FULL COLUMNS from innodb_table from test ;
```
[image:808 size:orig]
## 3. 参考链接
[https://dev.mysql.com/doc/refman/5.7/en/columns-table.html](https://dev.mysql.com/doc/refman/5.7/en/columns-table.html)