information_schema 这这个数据库中保存了 MySQL 服务器所有数据库的信息。
如数据库名,数据库的表,表栏的数据类型与访问权限等。
再简单点,这台 MySQL 服务器上,到底有哪些数据库、各个数据库有哪些表,
每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在 information_schema 里面。
选用 MySQL 版本 5.6.25
1 | select version(); |
1 | use information_schema; |
information_schema 数据库中有 59 张表, 分别存储了如下的信息:
参考官方文档
| SCHEMATA | 提供了当前 mysql 实例中所有数据库的信息,show databases 的结果取之此表。 |
| ————————————- | ——————————————————————————————————————————————————- | ———————————————————————————— |
| TABLES | 提供了关于数据库中的表的信息(包括视图),详细表述了某个表属于哪个 schema,表类型,表引擎,创建时间等信息,show tables from schemaname 的结果取之此表。 |
| COLUMNS | 提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息,show columns from schemaname.tablename 的结果取之此表。 |
| STATISTICS | 提供了关于表索引的信息,show index from schemaname.tablename 的结果取之此表。 |
| USER_PRIVILEGES(用户权限) | 给出了关于全程权限的信息,该信息源自 mysql.user 授权表,是非标准表。 |
| SCHEMA_PRIVILEGES(方案权限) | 给出了关于方案(数据库)权限的信息,该信息来自 mysql.db 授权表,是非标准表。 |
| TABLE_PRIVILEGES(表权限) | 给出了关于表权限的信息,该信息源自 mysql.tables_priv 授权表,是非标准表。 |
| COLUMN_PRIVILEGES(列权限) | 给出了关于列权限的信息,该信息源自 mysql.columns_priv 授权表,是非标准表。 |
| CHARACTER_SETS(字符集) | 提供了 mysql 实例可用字符集的信息,SHOW CHARACTER SET 结果集取之此表。 |
| COLLATIONS | 提供了关于各字符集的对照信息。 |
| COLLATION_CHARACTER_SET_APPLICABILITY | 指明了可用于校对的字符集,这些列等效于 SHOW COLLATION 的前两个显示字段。 |
| TABLE_CONSTRAINTS | 描述了存在约束的表,以及表的约束类型。 |
| KEY_COLUMN_USAGE | 描述了具有约束的键列。 |
| ROUTINES | 提供了关于存储子程序(存储程序和函数)的信息,此时,ROUTINES 表不包含自定义函数(UDF),名为 | “mysql.proc name”的列指明了对应于 INFORMATION_SCHEMA.ROUTINES 表的 mysql.proc 表列。 |
| VIEWS | 给出了关于数据库中的视图的信息,需要有 show views 权限,否则无法查看视图信息。 |
| TRIGGERS | 提供了关于触发程序的信息,必须有 super 权限才能查看该表。 |
information_schema 的表 schemata 中的列 schema_name 记录了所有数据库的名字
information_schema 的表 tables 中的列 table_schema 记录了所有数据库的名字
information_schema 的表 tables 中的列 table_name 记录了所有数据库的表的名字
information_schema 的表 columns 中的列 table_schema 记录了所有数据库的名字
information_schema 的表 columns 中的列 table_name 记录了所有数据库的表的名字
information_schema 的表 columns 中的列 column_name 记录了所有数据库的表的列的名字