MySQL 8 information_schema 数据库完整说明 ## 基本信息 - 数据库名称: information_schema - 作用: 提供数据库元数据访问 - 特性: 只读视图、实时数据、标准兼容 - MySQL版本: 8.0+ ## 主要表结构 1. SCHEMATA - 所有数据库信息 - CATALOG_NAME - SCHEMA_NAME - DEFAULT_CHARACTER_SET_NAME - DEFAULT_COLLATION_NAME - SQL_PATH 2. TABLES - 所有表的基本信息 - TABLE_CATALOG - TABLE_SCHEMA (数据库名) - TABLE_NAME - TABLE_TYPE (BASE TABLE/VIEW) - ENGINE (存储引擎) - TABLE_ROWS (行数估算) - CREATE_TIME - UPDATE_TIME - TABLE_COMMENT 3. COLUMNS - 所有表的列信息 - TABLE_SCHEMA - TABLE_NAME - COLUMN_NAME - ORDINAL_POSITION (列位置) - DATA_TYPE (数据类型) - IS_NULLABLE - COLUMN_DEFAULT - COLUMN_COMMENT 4. STATISTICS - 表索引信息 - TABLE_SCHEMA - TABLE_NAME - INDEX_NAME - COLUMN_NAME - NON_UNIQUE (是否唯一索引) 5. ROUTINES - 存储过程和函数 - ROUTINE_NAME - ROUTINE_TYPE (PROCEDURE/FUNCTION) - ROUTINE_DEFINITION 6. VIEWS - 视图信息 - TABLE_SCHEMA - TABLE_NAME - VIEW_DEFINITION - CHECK_OPTION - IS_UPDATABLE 7. TRIGGERS - 触发器信息 - TRIGGER_NAME - EVENT_MANIPULATION (INSERT/UPDATE/DELETE) - ACTION_STATEMENT (触发器内容) ## 常用查询示例 1. 查询所有数据库 SELECT schema_name FROM information_schema.schemata; 2. 查询表结构 SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = '数据库名' AND table_name = '表名'; 3. 查询所有存储过程 SELECT routine_name FROM information_schema.routines WHERE routine_schema = '数据库名' AND routine_type = 'PROCEDURE'; 4. 查询外键关系 SELECT table_name, column_name, referenced_table_name FROM information_schema.key_column_usage WHERE referenced_table_name IS NOT NULL; ## 注意事项 1. 所有查询需要SELECT权限 2. 数据是实时生成的,非持久化存储 3. 不能直接修改这些表中的数据 4. 不同MySQL版本可能有细微差异