MySQL 元数据学习笔记
MySQL 元数据(metadata),也称为数据字典(data dictionary)或系统目录(system catalog),是指描述数据库中存储的数据及其结构、约束和其它相关信息的数据集合。
1. 常用的元数据表
1.1. information_schema.COLUMNS
该表包含了所有表的字段信息,如列名、数据类型、默认值、是否允许 NULL 值等。
例如,查询某个表的字段信息:
sqlCopy CodeSELECT column_name, data_type, is_nullable
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'mydatabase' AND TABLE_NAME = 'mytable';
1.2. information_schema.TABLES
该表包含了所有表的信息,如表名、表类型、引擎类型等。
例如,查询某个数据库中的所有表:
sqlCopy CodeSELECT TABLE_NAME, TABLE_TYPE, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydatabase';
1.3. information_schema.KEY_COLUMN_USAGE
该表包含了所有索引字段的信息,如索引名、字段名称、索引类型等。
例如,查询某个索引的字段信息:
sqlCopy CodeSELECT COLUMN_NAME, INDEX_NAME, INDEX_TYPE
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'mydatabase' AND TABLE_NAME = 'mytable' AND INDEX_NAME = 'myindex';
2. 实例
假设我们有一个名为 employees
的数据库,其中有一张名为 departments
的表,我们可以通过以下 SQL 语句查询该表的字段信息:
sqlCopy CodeSELECT column_name, data_type, is_nullable
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';
查询结果如下:
Copy Code+-------------+-----------+-------------+
| column_name | data_type | is_nullable |
+-------------+-----------+-------------+
| dept_no | char(4) | NO |
| dept_name | varchar(40) | NO |
+-------------+-----------+-------------+
我们也可以通过以下 SQL 语句查询该数据库中的所有表并输出其行数:
sqlCopy CodeSELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'employees';
查询结果如下:
Copy Code+--------------------+------------+
| TABLE_NAME | TABLE_ROWS |
+--------------------+------------+
| departments | 999 |
| dept_emp | 331603 |
| dept_manager | 24 |
| employees | 300024 |
| salaries | 2844047 |
| titles | 443308 |
+--------------------+------------+
最后,我们可以通过以下 SQL 语句查询某个索引的字段信息:
sqlCopy CodeSELECT COLUMN_NAME, INDEX_NAME, INDEX_TYPE
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments' AND INDEX_NAME = 'dept_name';
查询结果如下:
Copy Code+-------------+-----------+------------+
| COLUMN_NAME | INDEX_NAME | INDEX_TYPE |
+-------------+-----------+------------+
| dept_name | dept_name | BTREE |
+-------------+-----------+------------+
以上就是 MySQL 元数据的一些简单介绍和实例。