MySQL内置数据库information_schema 详解

当你安装好MySQL数据库环境后,然后使用客户端连接后,会发现数据库列表不是空的,会有四个数据库(information_schema、mysql、sys、performance_schema)。

这是MySQL 8.0 自带的4个系统数据库:

①information_schema:这个数据库保存了mysql服务器所有数据库的信息。比如数据库的名、数据库的表、访问权限、数据库表的数据类型,数据库索引的信息等等。
②performance_schema:主要用于收集数据库服务器性能参数,可用于监控服务器在一个较低级别的运行过程中的资源消耗、资源等待等情况。链接:performance_schema全方位介绍
③sys:库中所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。链接: MYSQL的SYS数据库
④mysql:mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。

今天先给大家聊聊MySQL内置的information_schema 数据库相关的知识,希望对大家深入了解MySQL能够提供一些帮助!

一、information_schema简介

information_schema 是 MySQL 数据库中内置的一个系统数据库,它的作用主要是存储关于整个MySQL实例当中数据库、数据表、列、索引、约束、存储过程、函数、触发器等各种元数据信息。我们日常使用它可以很方便查询和分析数据库的结构和数据库的一些统计信息。 另外很多数据库客户端的开发、数据库表结构生成等工具、数据库运行状态分析都是基于这个表的数据来进行开发的。

注意:information_schema 中的数据是只读的,不允许对其进行修改。 它会随着数据库的变化根据变化,比如你新建一个数据表,对应存储数据表的记录也会发生变化。

二、information_schema组成

2.1 所有数据表

执行如下命令,查询information_schema的数据表

SELECT TABLE_NAME from information_schema.`TABLES` where TABLE_SCHEMA='information_schema';

mysql8.0.13查询结果有65张数据表,查询结果如下:

CHARACTER_SETS
COLLATION_CHARACTER_SET_APPLICABILITY
COLLATIONS
COLUMN_PRIVILEGES
COLUMN_STATISTICS
COLUMNS
ENGINES
EVENTS
FILES
INNODB_BUFFER_PAGE
INNODB_BUFFER_PAGE_LRU
INNODB_BUFFER_POOL_STATS
INNODB_CACHED_INDEXES
INNODB_CMP
INNODB_CMP_PER_INDEX
INNODB_CMP_PER_INDEX_RESET
INNODB_CMP_RESET
INNODB_CMPMEM
INNODB_CMPMEM_RESET
INNODB_COLUMNS
INNODB_DATAFILES
INNODB_FIELDS
INNODB_FOREIGN
INNODB_FOREIGN_COLS
INNODB_FT_BEING_DELETED
INNODB_FT_CONFIG
INNODB_FT_DEFAULT_STOPWORD
INNODB_FT_DELETED
INNODB_FT_INDEX_CACHE
INNODB_FT_INDEX_TABLE
INNODB_INDEXES
INNODB_METRICS
INNODB_SESSION_TEMP_TABLESPACES
INNODB_TABLES
INNODB_TABLESPACES
INNODB_TABLESPACES_BRIEF
INNODB_TABLESTATS
INNODB_TEMP_TABLE_INFO
INNODB_TRX
INNODB_VIRTUAL
KEY_COLUMN_USAGE
KEYWORDS
OPTIMIZER_TRACE
PARAMETERS
PARTITIONS
PLUGINS
PROCESSLIST
PROFILING
REFERENTIAL_CONSTRAINTS
RESOURCE_GROUPS
ROUTINES
SCHEMA_PRIVILEGES
SCHEMATA
ST_GEOMETRY_COLUMNS
ST_SPATIAL_REFERENCE_SYSTEMS
STATISTICS
TABLE_CONSTRAINTS
TABLE_PRIVILEGES
TABLES
TABLESPACES
TRIGGERS
USER_PRIVILEGES
VIEW_ROUTINE_USAGE
VIEW_TABLE_USAGE
VIEWS

说明:实际上这65张不是实际的数据表,属于视图。只能读取操作。

主要MySQL版本中的information_schema区别

MySQL 5.6版本

总共有59张表,其中10张MyISAM引擎临时表(数据字典表),49张Memory引擎临时表(保存统计信息和一些临时信息)。

MySQL 5.7版本

总共有61张表,其中10个InnoDB存储引擎临时表(数据字典表),51个Memory引擎临时表。

MySQL 8.0版本

数据字典表(包含部分原memory引擎临时表)都迁移到了mysql数据库的schema架构下,且在mysql schema下这些数据字典表被隐藏,无法直接访问,需要通过information_schema下的同名表进行访问(统计信息表保留在information_schema下且仍然为Memory引擎)

2.2 常用数据表介绍

SCHEMATA (数据库)

主要是用来存储当前数据库实例的中所有的数据库信息。

-- 查询当前数据库实例所有的数据库信息 
SELECT * from information_schema.SCHEMATA;

说明:主要包含数据库名、数据库字符集编码信息。

TABLES (数据表)

主要是存储所有表的信息,包括表名、所属数据库、表类型、引擎类型、行数、存储占用、创建时间等信息。

-- 查询当前数据库实例所有数据表信息
SELECT * from information_schema.Tables;

COLUMNS表(表字段)

主要是存储当前数据库实例所有数据表中字段详细信息,比如所属数据库、所属表名、字段名称、字段长度、字段类型、字段注释、是否是主键等字段的详情信息。

-- 查询当前数据库实例所有数据表中数据字段的信息

SELECT * from information_schema.`COLUMNS`;

VIEWS (视图)

主要是存储当前数据库实例所有的数据库视图信息,包括所属数据库、视图名称、视图定义、字符集等信息。

-- 查询当前数据库实例所有数据视图

SELECT * from information_schema.`VIEWS`;

ROUTINES (函数、存储过程)

主要是存储当前数据库实例所有的函数、存储过程信息,包括所属数据库、函数/存储过程名称、存储过程定义SQL、字符集等信息。

-- 查询当前数据库实例所有函数和存储过程

SELECT * from information_schema.`ROUTINES`;
TABLE_CONSTRAINTS(约束)

主要存储当前数据库实例的约束和唯一主键信息,可以用来查询对应数据表的约束信息,查询结果主要包含所属数据库、约束名称、所属数据表、约束类型(主键约束、唯一约束等等)

-- 查询当前数据库实例所有约束

SELECT * from TABLE_CONSTRAINTS;

TRIGGERS (触发器)

主要存储当前数据库实例的触发器信息,主要包括所属数据库、触发器名称、触发器定义sql等信息。

-- 查询当前数据库实例所有触发器信息

SELECT * from information_schema.TRIGGERS;

三、总结

information_schema 是掌握整个数据库实例数据库表结构信息的非常重要的内容,以上转载自MySQL内置数据库information_schema 详解-腾讯云开发者社区-腾讯云的比较常用的information_schema 的介绍,大家如果有更加实用的欢迎补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值