MySQL默认四张表
MySQL是一个开源的关系型数据库管理系统,被广泛应用于各种Web应用程序中。在MySQL中,有四张默认的系统表,分别是:information_schema、mysql、performance_schema和sys。本文将介绍这四张表的作用和常用的查询操作。
1. information_schema表
information_schema是MySQL中用于存储数据库和表的元数据信息的系统数据库。它提供了一系列的表,用于查询和管理数据库的结构和属性。这些表包括tables、columns、schemata等。我们可以通过查询information_schema来获取数据库和表的详细信息。
查询所有数据库
SELECT SCHEMA_NAME AS DatabaseName,
DEFAULT_COLLATION_NAME AS Collation
FROM information_schema.SCHEMATA;
查询指定数据库的所有表
SELECT TABLE_NAME AS TableName,
ENGINE AS StorageEngine,
TABLE_ROWS AS RowCount
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name';
查询指定表的所有列
SELECT COLUMN_NAME AS ColumnName,
DATA_TYPE AS DataType,
CHARACTER_MAXIMUM_LENGTH AS MaxLength,
IS_NULLABLE AS IsNullable
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';
2. mysql表
mysql表是MySQL中存储用户和权限信息的系统表,用于管理用户、授权和权限等。这些信息存储在mysql数据库中的user、db、tables_priv等表中。
查询所有用户
SELECT user,
host
FROM mysql.user;
创建新用户
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
授予用户权限
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database_name.your_table_name TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
3. performance_schema表
performance_schema是MySQL中用于存储性能相关信息的系统数据库。它提供了一系列的表,用于查询和监控MySQL服务器的性能指标。我们可以通过查询performance_schema来获取MySQL服务器的运行状态和性能数据。
查询所有表的IO操作
SELECT OBJECT_SCHEMA AS DatabaseName,
OBJECT_NAME AS TableName,
COUNT_READ AS ReadCount,
COUNT_WRITE AS WriteCount
FROM performance_schema.table_io_waits_summary_by_table;
查询所有线程的状态
SELECT THREAD_ID AS ThreadId,
THREAD_OS_ID AS OSThreadId,
PROCESSLIST_ID AS ProcessId,
PROCESSLIST_USER AS User,
PROCESSLIST_HOST AS Host,
PROCESSLIST_STATE AS State
FROM performance_schema.threads;
4. sys表
sys表是MySQL 8.0版本引入的新系统表,用于提供更方便和易读的方式来查询和操作MySQL服务器的元数据和性能信息。sys表是建立在information_schema和performance_schema基础上的更高层次的视图。
查询数据库和表的大小
SELECT table_schema AS DatabaseName,
table_name AS TableName,
sys.format_bytes(data_length) AS DataSize,
sys.format_bytes(index_length) AS IndexSize,
sys.format_bytes(data_length + index_length) AS TotalSize
FROM sys.tables;
查询慢查询日志
SELECT event_time AS EventTime,
user_host AS UserHost,
sql_text AS SqlText,
timer_wait AS WaitTime
FROM sys.statement_analysis
WHERE schema_name = 'your_database_name'
AND timer_wait > 0
ORDER BY timer_wait DESC;
以上是MySQL默认四张表的简要介绍和常用查询操作示例。这些表提供了丰富的元数据和性能信息,帮助我们更好地管理和优化MySQL数据库。在实际应用中,我们可以根据具体需求使用这些表进行数据分析、性能监控和故障排除。
关系图
下面是MySQL默认四张表的关系图:
erDiagram
mysql.user ||--|| mysql.db
mysql.user ||--|| mysql.tables_priv
mysql.user ||--|| mysql.proxies_priv
mysql.db ||--|| mysql.tables_priv
mysql.tables_priv ||--|{ mysql.columns_priv
流程图
下面是查询指定表的所有列的流程图:
flowchart TD
A[开始] --> B[连接数据库
















