往期专题请查看www.zhaibibei.cn 这是一个坚持Oracle,Python,MySQL原创内容的公众号
这个专题主要讲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';
或者 SHOW COLUMNS from innodb_table from test;
show 命令只显示该表中一些栏位 第一个from后是表名,第二from后是数据库名称 3. 参考链接https://dev./doc/refman/5.7/en/columns-table.html
|