MySQL information_schema 数据库详解
- 1. information_schema 简介
- 2. information_schema 数据库中的表说明
-
- 2.1 CHARACTER_SETS 表
- 2.2 SCHEMATA 表
- 2.3 TABLES 表
- 2.4 COLUMNS 表
- 2.5 STATISTICS 表
- 2.6 USER_PRIVILEGES 表
- 2.7 SCHEMA_PRIVILEGES 表
- 2.8 TABLE_PRIVILEGES 表
- 2.9 COLUMN_PRIVILEGES 表
- 2.10 COLLATIONS 表
- 2.11 COLLATION_CHARACTER_SET_APPLICABILITY 表
- 2.12 TABLE_CONSTRAINTS 表
- 2.13KEY_COLUMN_USAGE 表
- 2.14 ROUTINES 表
- 2.15 VIEWS 表
- 2.16 TRIGGERS 表
- 3. MySQL 8.0 information_schema 改进
官方文档:https://dev.mysql.com/doc/refman/8.0/en/information-schema.html
1. information_schema 简介
information_schema 是 MySQL 自带的数据库,它提供了访问数据库元数据
的方式。
(1)什么是元数据?
元数据(MetaData),即数据的数据,是指定义数据结构
的数据。那么数据库元数据就是指定义数据库各类对象结构
的数据。 例如数据库中的数据库名,表明, 列名、用户名、版本名以及从SQL语句得到的结果中的大部分字符串
是元数据。
(2)MySQL 中的 information_schema数据库
在 MySQL 中,把 information_schema 看做是一个数据库,确切的说是信息数据库
。它保存着关于 MySQL 服务器所维护的所有其他数据库的信息
,如:数据库名,数据库的表,表栏的数据类型与访问权限等。在 information_schema 中,有数个只读表
。它们实际上是视图,而不是基本表
,因此,你将无法看到与之相关的任何文件。
2. information_schema 数据库中的表说明
mysql> use information_schema;
mysql> show tables;
2.1 CHARACTER_SETS 表
提供了 MySQL 实例可用字符集的信息,SHOW CHARACTER SET;
命令从这个表获取结果。
mysql> SHOW CHARACTER SET;
mysql> SELECT * FROM CHARACTER_SETS;
2.2 SCHEMATA 表
提供了当前 MySQL 实例中所有数据库的信息。show databases;
命令的结果就是取的此表。
mysql> show databases;
mysql> SELECT * FROM SCHEMATA;
2.3 TABLES 表
存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。SHOW TABLES FROM XX;
命令从这个表获取结果。
mysql> SELECT * FROM TABLES;
mysql> SHOW TABLES FROM pointer_mall;
2.4 COLUMNS 表
存储表中的列信息,包括表有多少列、每个列的类型等。SHOW COLUMNS FROM schemaname.tablename;
命令从这个表获取结果。
mysql> SELECT * FROM COLUMNS LIMIT 2,5;
SHOW COLUMNS FROM pointer_mall.account;
2.5 STATISTICS 表
表索引的信息。SHOW INDEX FROM schemaname.tablename;
命令从这个表获取结果。
mysql> SHOW INDEX FROM pointer_mall.account;
2.6 USER_PRIVILEGES 表
用户权限表。内容源自 mysql.user
授权表。是非标准表。
mysql> SELECT * FROM USER_PRIVILEGES;
2.7 SCHEMA_PRIVILEGES 表
方案权限表。给出了关于方案(数据库)权限的信息。内容来自 mysql.db
授权表。是非标准表。
mysql> SELECT * FROM SCHEMA_PRIVILEGES;
2.8 TABLE_PRIVILEGES 表
表权限表。给出了关于表权限的信息。内容源自 mysql.tables_priv
授权表。是非标准表。
mysql> SELECT * FROM TABLE_PRIVILEGES;
2.9 COLUMN_PRIVILEGES 表
列权限表。给出了关于列权限的信息。内容源自 mysql.columns_priv
授权表。是非标准表。
mysql> SELECT * FROM COLUMN_PRIVILEGES;
2.10 COLLATIONS 表
提供了关于各字符集的对照信息。SHOW COLLATION;
命令从这个表获取结果。
mysql> SELECT * FROM COLLATIONS;
mysql> SHOW COLLATION;
2.11 COLLATION_CHARACTER_SET_APPLICABILITY 表
指明了可用于校对的字符集。相当于 SHOW COLLATION;
命令结果的前两个字段。
mysql> SELECT * FROM COLLATION_CHARACTER_SET_APPLICABILITY;
2.12 TABLE_CONSTRAINTS 表
mysql> SELECT * FROM TABLE_CONSTRAINTS;
2.13KEY_COLUMN_USAGE 表
mysql> SELECT * FROM KEY_COLUMN_USAGE;
2.14 ROUTINES 表
提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES 表不包含自定义函数(UDF)。名为 mysql.proc name 的列指明了对应于 INFORMATION_SCHEMA.ROUTINES 表的 mysql.proc 列。
2.15 VIEWS 表
给出了关于数据库中的视图的信息。需要有 show views
权限,否则无法查看视图信息。
mysql> SELECT * FROM VIEWS LIMIT 1G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: sys
TABLE_NAME: version
VIEW_DEFINITION: select '2.1.2' AS `sys_version`,version() AS `mysql_version`
CHECK_OPTION: NONE
IS_UPDATABLE: NO
DEFINER: mysql.sys@localhost
SECURITY_TYPE: INVOKER
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
2.16 TRIGGERS 表
提供了关于触发程序的信息。必须有 super
权限才能查看该表。
mysql> SELECT * FROM TRIGGERS LIMIT 1G
*************************** 1. row ***************************
TRIGGER_CATALOG: def
TRIGGER_SCHEMA: sys
TRIGGER_NAME: sys_config_insert_set_user
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: def
EVENT_OBJECT_SCHEMA: sys
EVENT_OBJECT_TABLE: sys_config
ACTION_ORDER: 1
ACTION_CONDITION: NULL
ACTION_STATEMENT: BEGIN
IF @sys.ignore_sys_config_triggers != true AND NEW.set_by IS NULL THEN
SET NEW.set_by = USER();
END IF;
END
ACTION_ORIENTATION: ROW
ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
ACTION_REFERENCE_OLD_ROW: OLD
ACTION_REFERENCE_NEW_ROW: NEW
CREATED: 2022-11-03 14:07:50.56
SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
DEFINER: mysql.sys@localhost
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_0900_ai_ci
DATABASE_COLLATION: utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
3. MySQL 8.0 information_schema 改进
重命名的 InnoDB information_schema
旧名称 | 新名称 |
---|---|
INNODB_SYS_COLUMNS | INNODB_COLUMNS |
INNODB_SYS_DATAFILES | INNODB_DATAFILES |
INNODB_SYS_FIELDS | INNODB_FIELDS |
INNODB_SYS_FOREIGN | INNODB_FOREIGN |
INNODB_SYS_FOREIGN_COLS | INNODB_FOREIGN_COLS |
INNODB_SYS_INDEXES | INNODB_INDEXES |
INNODB_SYS_TABLES | INNODB_TABLES |
INNODB_SYS_TABLESPACES | INNODB_TABLESPACES |
INNODB_SYS_TABLESTATS | INNODB_TABLESTATS |
INNODB_SYS_VIRTUAL | INNODB_VIRTUAL |
原文地址:https://blog.csdn.net/weixin_42201180/article/details/127354532
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_9357.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!