参考官方文档:
https://dev.mysql.com/doc/refman/5.7/en/character-sets-table.html
CHARACTER_SETS表包含以下列:
字符集名称。
字符集的默认排序规则。
字符集的描述。
存储一个字符所需的最大字节数。
注意,以下语句是等效的:
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS [WHERE CHARACTER_SET_NAME LIKE 'wild']
SHOW CHARACTER SET [LIKE 'wild']
COLLATIONS 表有以下字段:
规则名称。
与排序规则关联的字符集的名称。
规则ID。
排序规则是否为其字符集的默认值。
字符集是否编译到服务器中。
这与字符集中表示的字符串进行排序所需的内存量关联。
注意,以下语句等效:
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS [WHERE COLLATION_NAME LIKE 'wild']
SHOW COLLATION [LIKE 'wild']
包含该列的表所属的目录的名称。该值始终为def。
包含列的表所属的方案(数据库)的名称。
包含该列的表的名称。
列的名称。
表中列的位置。 ORDINAL_POSITION是必要的,因为你可能想使用ORDER BY ORDINAL_POSITION。与SHOW COLUMNS不同,COLUMNS表中的SELECT没有自动排序。
列的默认值。如果列具有显式缺省值NULL,或者列定义不包含DEFAULT子句,则此值为NULL。
列可空性。如果NULL值可以存储在列中,则值为YES,否则为NO。
列数据类型。
DATA_TYPE值只是类型名称,没有其他信息。 COLUMN_TYPE值包含类型名称以及可能的其他信息,例如精度或长度。
对于字符串列,最大长度(以字符为单位)。
对于字符串列,最大长度(以字节为单位)。
对于数字列,数字精度。
对于数字列,数字刻度。
对于时间列,小数秒的精度。
对于字符串列,字符集名称。
对于字符串列,排序规则名称。
列数据类型。
DATA_TYPE值只是类型名称,没有其他信息。 COLUMN_TYPE值包含类型名称以及可能的其他信息,例如精度或长度
字段是否被索引:
如果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索引不能包含NULL值并且表中没有PRIMARY KEY,则它可能显示为PRI。 如果多个列形成复合UNIQUE索引,则UNIQUE索引可以显示为MUL; 虽然列的组合是唯一的,但每列仍然可以保存给定值的多次。
有关给定列的任何其他可用信息。 在这些情况下,该值是非空的:
auto_increment用于具有AUTO_INCREMENT属性的列。
对于 TIMESTAMP或 DATETIME字段有 ON UPDATE CURRENT_TIMESTAMP 属性就是 on update CURRENT_TIMESTAMP
对于生成列的 VIRTUAL GENERATED或 VIRTUAL STORED。
字段所拥有的权限
字段所包含的任何注释
对于生成的列,显示用于计算列值的表达式。 为非生成列则为空。
注意:
以下语句是等效的:
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']
COLUMN_PRIVILEGES表包含这些列:
授予权限的帐户的名称,格式为“user_name”@“host_name”。
包含该列的表所属的目录的名称。 该值始终为def。
包含列的表所属的方案(数据库)的名称。
包含字段的表的名称
被授予的权限。 该值可以是可以在列级别授予的任何权限; 请参见第13.7.1.4节“GRANT语法”。 每行列出一个权限,因此每一行表示被授予的每一个字段权限。
在SHOW FULL COLUMNS的输出中,权限全在一列以小写显示,例如,select,insert,update,references。 在COLUMN_PRIVILEGES中,每行是一个权限,以大写表示。
如果用户具有GRANT OPTION权限,则为YES,否则为NO。 输出不会将GRANT OPTION列为具有PRIVILEGE_TYPE ='GRANT OPTION'的单独行。
注意: COLUMN_PRIVILEGES 是非标准的 INFORMATION_SCHEMA 表
以下语句不等价:
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
SHOW GRANTS ...
KEY_COLUMN_USAGE表包含以下列:
具有约束的列的名称。
如果约束是外键,则这是外键的列,而不是外键引用的列。
约束所在的字段位置,而不是列在表中的位置。 列位置从1开始编号。
唯一和主键约束为NULL。 对于外键约束,此列是正在引用的表的键中的序号位置。 对应于ORDINAL_POSITION
被约束引用的方案(数据库)的名称。
被约束引用的表名
约束引用的列的名称。
包含分区的表名
如果PARTITIONS的表行表示子分区,则为子分区的名称; 否则为NULL。
所有分区被索引顺序与定义的顺序相同,1是分配给第一个分区的数字。 随着分区的添加,删除和重组,索引可能会发生变化; 显示的数字是此列反映的当前顺序,考虑到任何索引变更。
给定分区中的子分区也被索引和重新索引,其方式与在表中索引分区的方式相同。
值RANGE,LIST,HASH,LINEAR HASH,KEY或LINEAR KEY之一;
HASH,LINEAR HASH,KEY或LINEAR KEY之一的值;
用于创建表的当前分区方案的CREATE TABLE或ALTER TABLE语句中的分区函数的表达式。
此列用于RANGE和LIST分区。 对于RANGE分区,它包含分区的VALUES LESS THAN子句中设置的值,该子句可以是整数或MAXVALUE。 对于LIST分区,此列包含分区的VALUES IN子句中定义的值,该子句是逗号分隔的整数值列表。
对于PARTITION_METHOD不是RANGE或LIST的分区,此列始终为NULL。
分区中的表行数。
对于分区的InnoDB表,TABLE_ROWS列中给出的行计数仅是SQL优化中使用的估计值,并且可能并不总是精确的。
对于NDB表,您还可以使用ndb_desc工具获取此信息。
分配给分区或子分区没有被使用的字节数
分区或子分区被创建的时间
分区或子分区最后被修改的时间
分区或子分区最后被检查的时间
checksum 值,如果有的话,否则是NULL
注释的文本,如果分区有一个。 如果不是,则该值为空。
分区注释的最大长度定义为1024个字符,PARTITION_COMMENT列的显示宽度也是1024,是与此限制匹配的字符。
分区所属的表空间名称。这个值总是 DEFAULT,除非使用NDB存储引擎。
约束术语的方案(数据库)的名称
约束的名称
约束引用的唯一约束的名称。
约束ON UPDATE属性的值。 可能的值为CASCADE,SET NULL,SET DEFAULT,RESTRICT,NO ACTION。
约束ON DELETE属性的值。 可能的值为CASCADE,SET NULL,SET DEFAULT,RESTRICT,NO ACTION。
约束引用的表的名称。
SCHEMA_PRIVILEGES 有以下字段
被授予权限的用户的名称,格式为'user_name'@'host_name'。
方案的名称
被授予的权限。 该值可以是可以在方案级别授予的任何权限。 每行列出一个权限,因此每一行被一个被授予的方案权限。
如果用户具有GRANT OPTION权限,则为YES,否则为NO。 输出不会将GRANT OPTION列为具有PRIVILEGE_TYPE ='GRANT OPTION'的单独行。
注意,以下语句不等价:
SELECT ... FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
SHOW GRANTS ...
STATISTICS 表有下列字段:
包含索引的表的方案名
如果是0,索引不能包含重复值,1可以包含。
索引所属的方案名
索引的名称。如果索引是主键,则名称总是PRIMARY
索引中的列序列号,以1开头。
字段名称,可以参见 EXPRESSION 更多描述
列如何在索引中排序。 这可以具有值A(升序),D(降序)或NULL(未排序)。
评估索引中的唯一值的数量。 要更新此数字,请运行ANALYZE TABLE或(对于MyISAM表)myisamchk -a。
CARDINALITY基于存储为整数的统计数据计算,因此即使对于小型表,该值也不一定精确。 基数越高,MySQL在进行连接时使用索引的可能性就越大。
索引前缀。 也就是说,如果列仅被部分索引,则是索引的字符的数,如果整列被索引,则为NULL。
YES表上字段可能包含 NULL值,''相反。
使用的索引方法(BTREE,FULLTEXT,HASH,RTREE)。
有关未在其自己的列中描述的索引的信息,例如在禁用索引时是 disabled。
在创建索引时为索引提供的任何带有COMMENT属性的注释。
注意:以下语句等价
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name = 'tbl_name' AND table_schema = 'db_name'
SHOW INDEX FROM tbl_name FROM db_name
tables 表有下列字段:
对于表是 BASE TABLE,对于视图是VIEW,对于INFORMATION_SCHEMA 表是 SYSTEM VIEW。TABLES表不会列出临时表。
表.frm文件的版本号
行存储格式( Fixed, Dynamic, Compressed, Redundant, Compact)。使用Antelope文件格式时,InnoDB表格式为Redundant或Compact;使用Barracuda文件格式时,InnoDB表格格式为Compressed或Dynamic。
行数。 某些存储引擎(如MyISAM)会存储确切的数目。 对于其他存储引擎,例如InnoDB,该值是近似值,并且可以与实际值相差多达40%至50%。 在这种情况下,使用SELECT COUNT(*)来获得准确的计数。
INFORMATION_SCHEMA表的TABLE_ROWS为NULL。
对于InnoDB表,行计数只是SQL优化中使用的粗略估计。 (如果对InnoDB表进行了分区,也是如此。)
平均行长度
已分配但未使用的字节数。
InnoDB表报告表所属的表空间的可用空间。 对于位于共享表空间中的表,这是共享表空间的可用空间。 如果您使用多个表空间并且该表具有自己的表空间,则可用空间仅用于该表。 可用空间表示完全空闲的区域中的字节数减去安全边界。 即使可用空间显示为0,只要不需要分配新的扩展区,就可以插入行。
对于NDB群集,DATA_FREE显示磁盘上为磁盘数据表或片段分配但未使用的空间。 (DATA_LENGTH列报告内存中数据资源使用情况。)
对于分区表,此值仅为估计值,可能不完全正确。 在这种情况下获取此信息的更准确方法是查询INFORMATION_SCHEMA PARTITIONS表,如下例所示:
SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'mytable';
下一个 AUTO_INCREMENT 值
表被创建的时刻
上次更新数据文件的时间。 对于某些存储引擎,此值为NULL。 例如,InnoDB在其系统表空间中存储多个表,并且数据文件时间戳不适用。 即使每个InnoDB表在单独的.ibd文件中使用每个表文件模式,更改缓冲也会延迟写入数据文件,因此文件修改时间与上次插入,更新或删除的时间不同。 对于MyISAM,使用数据文件时间戳; 但是,在Windows上,更新不会更新时间戳,因此值不准确。
上次检查表的时间。 此时并非所有存储引擎都更新,在这种情况下,值始终为NULL。
对于分区的InnoDB表,CHECK_TIME始终为NULL。
注意:下列语句是等价的
SELECT TABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM, CREATE_OPTIONS, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'db_name' [AND table_name LIKE 'wild']
SHOW TABLE STATUS FROM db_name [LIKE 'wild']
SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'db_name' [AND table_name LIKE 'wild']
SHOW FULL TABLES FROM db_name [LIKE 'wild']
TRIGGERS 表有下列字段:
触发事件。 这是触发器激活的关联表上的操作类型。 值为INSERT(已插入行),DELETE(已删除行)或UPDATE(已修改行)。
触发器操作在具有相同EVENT_MANIPULATION和ACTION_TIMING值的同一表上的触发器列表中的序号位置。
这个值总是null
触发器在触发事件之前还是之后激活。 值为BEFORE或AFTER。
创建触发器的日期和时间。 在MySQL 5.7.2或更高版本中创建的触发器的是TIMESTAMP(2)值(以百分之几秒为单位),对于在5.7.2之前创建的触发器为NULL。
以'user_name'@'host_name'格式创建触发器的用户的帐户。
例如:
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
提供视图定义的SELECT语句。 此列包含您在SHOW CREATE VIEW生成的“Create Table”列中看到的大部分内容。 会略过SELECT之前的单词并跳过单词WITH CHECK OPTION。 假设原始语句是:
CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
看到的定义如下:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
CHECK_OPTION属性的值。 该值是NONE,CASCADE或LOCAL之一。
MySQL在CREATE VIEW时设置一个标记,称为视图可更新性标志。 如果UPDATE和DELETE(以及类似操作)对于视图是合法的,则该标志设置为YES(true)。 否则,该标志设置为NO(false)。 VIEWS表中的IS_UPDATABLE列显示此标志的状态
如果视图是不可更新的,那么,UPDATE,DELETE,和INSERT是非法的并被拒绝。
如果视图依赖于一个或多个其他视图,并且更新其中一个基础视图,则IS_UPDATABLE标志可能不可靠。 无论IS_UPDATABLE值如何,服务器都会跟踪视图的可更新性,并正确拒绝对不可更新的视图的数据更改操作。 如果视图的IS_UPDATABLE值由于对基础视图的更改而变得不准确,则可以通过删除并重新创建视图来更新该值。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3134632/ ,如需转载,请注明出处,否则将追究法律责任。