MySQL 元数据是指描述数据库、表、列、索引等结构信息的数据。元数据存储在系统数据库中,如 information_schemamysql 数据库。

1. 常用元数据表

  • information_schema.TABLES: 存储所有表的信息,如表名、引擎、行数等。

  • information_schema.COLUMNS: 存储所有列的信息,如列名、数据类型、是否允许 NULL 等。

  • information_schema.STATISTICS: 存储索引信息,如索引名、索引类型等。

  • information_schema.KEY_COLUMN_USAGE: 存储主键和外键信息。

  • information_schema.ROUTINES: 存储存储过程和函数的信息。

2. 查询元数据的案例

案例 1: 查询所有表的信息

SELECT TABLE_NAME, ENGINE, TABLE_ROWS 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'your_database_name';
  • TABLE_NAME: 表名

  • ENGINE: 存储引擎

  • TABLE_ROWS: 表的行数

案例 2: 查询表的列信息

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE 
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
  • COLUMN_NAME: 列名

  • DATA_TYPE: 数据类型

  • IS_NULLABLE: 是否允许 NULL

案例 3: 查询表的索引信息

SELECT INDEX_NAME, COLUMN_NAME, INDEX_TYPE 
FROM information_schema.STATISTICS 
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
  • INDEX_NAME: 索引名

  • COLUMN_NAME: 索引列名

  • INDEX_TYPE: 索引类型(如 BTREE)

案例 4: 查询表的主键信息

SELECT COLUMN_NAME 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND CONSTRAINT_NAME = 'PRIMARY';
  • COLUMN_NAME: 主键列名

案例 5: 查询存储过程和函数信息

SELECT ROUTINE_NAME, ROUTINE_TYPE 
FROM information_schema.ROUTINES 
WHERE ROUTINE_SCHEMA = 'your_database_name';
  • ROUTINE_NAME: 存储过程或函数名

  • ROUTINE_TYPE: 类型(PROCEDUREFUNCTION

3. 总结

MySQL 元数据提供了数据库结构的详细信息,通过查询 information_schema 数据库中的表,可以获取表、列、索引、主键、存储过程等的详细信息。这些信息对于数据库管理和优化非常有用。

本篇文章内容来源于:MySQL 元数据详细说明以及案例