参考资料

  1. MySQL 正则表达式详细说明以及案例
  2. MySQL GROUP BY 语句详细说明以及案例
  3. MySQL 连接的使用详细说明以及案例
  4. MySQL 导出数据详细说明以及案例
  5. MySQL DELETE 语句详细说明以及案例
  6. MySQL 复制表详细说明以及案例
  7. MySQL 选择数据库详细说明以及案例
  8. MySQL 索引详细说明以及案例

MySQL 元数据详细说明以及案例

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 数据库中的表,可以获取表、列、索引、主键、存储过程等的详细信息。这些信息对于数据库管理和优化非常有用。