MySQL自带四个数据库,分别是:
- information_schema
- performance_schema
- mysql
- test
本文介绍 information_schema 库。
简述
information_schema是MySQL中自带的一个数据库,里边存储着MySQL中所有的数据库信息,包括所有库名、表名、字典以及权限等,也就是存储数据库的元数据(关于数据库的数据),访问该数据库就能得到数据库中所有信息。
其中,在访问时,table_schema / schema_name是数据库的名称,table_name是具体的表名,table_type指的是表的类型
包含表
information_schema库中所有的表如下:
MariaDB [(none)]> use information_schema;
Database changed
MariaDB [information_schema]> show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| ALL_PLUGINS |
| APPLICABLE_ROLES |
| CHARACTER_SETS |
| CHECK_CONSTRAINTS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENABLED_ROLES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_CACHES |
| KEY_COLUMN_USAGE |
| OPTIMIZER_TRACE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| SYSTEM_VARIABLES |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
| GEOMETRY_COLUMNS |
| SPATIAL_REF_SYS |
| CLIENT_STATISTICS |
| INDEX_STATISTICS |
| INNODB_SYS_DATAFILES |
| USER_STATISTICS |
| INNODB_SYS_TABLESTATS |
| INNODB_LOCKS |
| INNODB_MUTEXES |
| INNODB_CMPMEM |
| INNODB_CMP_PER_INDEX |
| INNODB_CMP |
| INNODB_FT_DELETED |
| INNODB_CMP_RESET |
| INNODB_LOCK_WAITS |
| TABLE_STATISTICS |
| INNODB_TABLESPACES_ENCRYPTION |
| INNODB_BUFFER_PAGE_LRU |
| INNODB_SYS_FIELDS |
| INNODB_CMPMEM_RESET |
| INNODB_SYS_COLUMNS |
| INNODB_FT_INDEX_TABLE |
| INNODB_CMP_PER_INDEX_RESET |
| user_variables |
| INNODB_FT_INDEX_CACHE |
| INNODB_SYS_FOREIGN_COLS |
| INNODB_FT_BEING_DELETED |
| INNODB_BUFFER_POOL_STATS |
| INNODB_TRX |
| INNODB_SYS_FOREIGN |
| INNODB_SYS_TABLES |
| INNODB_FT_DEFAULT_STOPWORD |
| INNODB_FT_CONFIG |
| INNODB_BUFFER_PAGE |
| INNODB_SYS_TABLESPACES |
| INNODB_METRICS |
| INNODB_SYS_INDEXES |
| INNODB_SYS_VIRTUAL |
| INNODB_TABLESPACES_SCRUBBING |
| INNODB_SYS_SEMAPHORE_WAITS |
+---------------------------------------+
77 rows in set (0.001 sec)
MariaDB [information_schema]>
一些常用的表:
- SCHEMATA:提供了关于数据库的信息。
- TABLES:给出了关于数据库中的表的信息。
- COLUMNS:给出了表中的字段信息。
- STATISTICS:给出了关于表索引的信息。
- USER_PRIVILEGES(用户权限):给出了关于全程权限的信息。该信息源自mysql.user授权表。
- SCHEMA_PRIVILEGES(数据库权限):给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。
- TABLE_PRIVILEGES(表权限):给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。
- COLUMN_PRIVILEGES(列权限):给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。
- CHARACTER_SETS(字符集):提供了关于可用字符集的信息。
- COLLATIONS:提供了关于各字符集的对照信息。
- COLLATION_CHARACTER_SET_APPLICABILITY:指明了可用于校对的字符集。
- TABLE_CONSTRAINTS:描述了存在约束的表。
- KEY_COLUMN_USAGE:描述了具有约束的键列。
- VIEWS:给出了关于数据库中的视图的信息。
- TRIGGERS:提供了关于触发程序的信息。
常用表详解
1、SCHEMATA
存储数据库中所有的库名,show databases;
数据取自该表。
例:在information_schema.schemata中查询数据库中所有库
select schema_name from information_schema.schemata;
2、TABLES
存储所有表信息,show tables ( from XX );
数据取自该表。
例:查询数据库中所有表
select table_name from information_schema.tables;
3、COLUMNS
存储所有字段信息,show columns from schemaname.tablename;
数据取自改表。
例:查询数据库中所有字段
select column_name from information_schema.columns;
4、CHARACTER_SETS
可用字符集,show character set;
数据取自该表。
例:查看字符集
show character set;
select * from character_sets;
5、STATISTICS
索引信息表,SHOW INDEX FROM schemaname.tablename;
数据取自该表。
例:查看dvwa库中users表的索引信息
show index from dvwa.users;
6、USER_PRIVILEGES
用户权限表,内容源自 mysql.user
授权表。是非标准表。
例: 查看所有用户权限
select * from user_privileges;
7、SCHEMA_PRIVILEGES
方案权限表,给出了关于方案(数据库)权限的信息。内容来自 mysql.db
授权表。是非标准表。
例:查看所有方案(数据库)的权限
select * from schema_privileges;
8、TABLE_PRIVILEGES
表权限表,给出了关于表权限的信息。内容源自 mysql.tables_priv
授权表,是非标准表。
例:查看所有表权限
select * from table_privileges;
9、COLUMN_PRIVILEGES
字段权限表,给出了关于列权限的信息。内容源自 mysql.columns_priv
授权表。是非标准表。
例:查看所有字段权限
select * from column_privileges;
10、TABLE_CONSTRAINTS
描述存在约束的表,以及表的约束类型。
select * from table_constraints;
11、KEY_COLUMN_USAGE
描述具有约束的键列(字段)。
select * from key_column_usage;
12、VIEWS
给出了关于数据库中的视图的信息,需要有 show views
权限,否则无法查看视图信息。
(视图是从一个或多个表/视图中导出来的虚拟表,本身不包含数据。)
select * from views;
13、TRIGGERS
提供了关于触发程序的信息,必须有 super
权限才能查看该表。
(触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。)
select * from triggers;
暂时总结到此。