在MySQL中,可以使用INFORMATION_SCHEMA
这个特殊的数据库来查询数据库元数据。INFORMATION_SCHEMA
提供了关于数据库对象(如表、列、索引等)的详细信息。
以下是一些常用的INFORMATION_SCHEMA
表及其查询示例:
- SCHEMATA - 包含当前MySQL服务器中所有数据库的信息。
SELECT SCHEMA_NAME AS 'Database Name', DEFAULT_CHARACTER_SET_NAME AS 'Default Charset', DEFAULT_COLLATION_NAME AS 'Default Collation' FROM INFORMATION_SCHEMA.SCHEMATA;
- TABLES - 包含关于数据库中所有表的信息。你可以指定数据库名来过滤结果。
SELECT TABLE_SCHEMA AS 'Database Name', TABLE_NAME, TABLE_TYPE, ENGINE, TABLE_ROWS, AVG_ROW_SIZE, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, Collation_NAME, Checksum, Create_Options, Table_Comment FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name';
- COLUMNS - 包含关于表中所有列的信息。同样,你可以指定数据库名和表名来过滤结果。
SELECT TABLE_SCHEMA AS 'Database Name', TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA, PRIVILEGES, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
- STATISTICS - 包含关于表索引的统计信息。
SELECT TABLE_SCHEMA AS 'Database Name', TABLE_NAME, INDEX_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_POSITION, CARDINALITY, SUB_PART, PACKED, NULLABLE, INDEX_TYPE, COMMENT FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
注意:在实际使用时,需要将your_database_name
和your_table_name
替换为实际的数据库名和表名。
这些查询只是INFORMATION_SCHEMA
提供的众多功能中的一部分。你可以根据自己的需求组合这些查询来获取所需的信息。