INFORMATION_SCHEMA

INFORMATION_SCHEMA 是从 MySQL 5 开始提供的一个虚拟数据库,包含有关服务器和数据库的元数据(即数据关于数据的描述)。

  • 不可修改:您无法修改 INFORMATION_SCHEMA 的结构或数据,只能查询其表中的信息。
  • 灵活性:尽管使用 SHOW 语句更快捷,但 INFORMATION_SCHEMA 提供了一种更灵活的方式来获取和组织元数据。

1. 数据库信息

列出所有数据库

以下命令用于列出当前服务器上的数据库:

SHOW DATABASES;
  • SCHEMADATABASES 的同义词,为了与其他数据库管理系统(DBMS)兼容。

按名称过滤数据库

通过 LIKE 运算符列出符合特定模式的数据库,例如列出名称以 my 开头的数据库:

SHOW DATABASES LIKE 'my%';

使用更复杂的条件

通过 WHERE 子句添加更复杂的过滤条件,例如:

SHOW DATABASES WHERE conditions;

2. 表和视图信息

列出所有表

使用以下命令列出指定数据库中的表:

USE `database`;
SHOW TABLES;

或者:

SHOW TABLES FROM `database`;

按名称过滤表

通过 LIKE 运算符过滤表名,例如:

SHOW TABLES LIKE 'pattern';

获取更多信息

使用 FULL 关键字查看表的类型信息:

SHOW FULL TABLES;
  • Table_type 列的值:
    • 'BASE TABLE':普通表。
    • 'VIEW':视图。
    • 'SYSTEM VIEW':系统表(如 INFORMATION_SCHEMA 表)。

列出视图:

SHOW FULL TABLES WHERE `Table_type` = 'VIEW';

列出普通表:

SHOW FULL TABLES WHERE `Table_type` = 'BASE TABLE';

3. 字段(列)信息

列出表的字段

获取表或视图中字段的详细信息:

DESCRIBE `table`;

或者:

SHOW COLUMNS FROM `table`;

支持过滤条件

  • 使用 LIKE 过滤字段名称:
    SHOW COLUMNS FROM `table` LIKE 'pattern';
    
  • 使用 WHERE 添加复杂条件:
    SHOW COLUMNS FROM `table` WHERE condition;
    

获取附加信息

使用 FULL 关键字获取更多字段信息,例如字段的排序规则(collation)、权限和注释:

SHOW FULL COLUMNS FROM `table`;

4. 索引信息

列出表的索引

查询表中所有索引的信息:

SHOW INDEX FROM `table`;

或者:

SHOW INDEX FROM `table` FROM `database`;
  • INDEX 的同义词是 KEYS

结果示例

Table   Non_unique  Key_name  Seq_in_index  Column_name  Collation  Cardinality  Index_type
Table1  0           PRIMARY   1            id           A          19           BTREE

删除索引

删除一个索引,例如:

DROP INDEX `date_2` ON `Table1`;

5. 视图信息

INFORMATION_SCHEMA.VIEWS 表提供关于视图的元数据。SHOW FULL TABLES 只能提供视图的基本信息。如果需要详细信息,建议查询 VIEWS 表。


6. 其他补充

打开的表

列出所有非临时表(不包括视图)并检查其是否在缓存中打开:

SHOW OPEN TABLES;

注意事项

  • 使用 phpMyAdmin,可以更轻松地通过图形界面查看和管理这些信息。
  • 避免重复创建索引,因为这会降低性能。

通过以上命令,您可以全面管理 MySQL 数据库中的元数据和结构信息。

Last modified: Friday, 17 January 2025, 7:22 PM