INFORMATION_SCHEMA (或 information_schema) 是一个系统数据库,提供一种近乎标准化的、与 DBMS 无关的视图,用于查看数据库对象的元数据。INFORMATION_SCHEMA 中的视图通常不如常规系统表完善,但工具可以借助它们以跨 DBMS 的方式获取基础信息。INFORMATION_SCHEMA 中各视图的结构和内容应以向后兼容的方式演进,也就是说,只会添加新功能,而不会更改或移除现有功能。从内部实现来看,INFORMATION_SCHEMA 中的视图通常映射到常规系统表,例如 system.columns、system.databases 和 system.tables。
INFORMATION_SCHEMA 包含以下视图:
出于兼容其他数据库的考虑,还提供了不区分大小写的对应视图,例如 INFORMATION_SCHEMA.columns。这些视图中的所有列也是如此——同时提供了小写 (例如 table_name) 和大写 (TABLE_NAME) 两种形式。
COLUMNS
NULL) 、但标准要求必须存在的列。
列:
table_catalog(String) — 目前未使用。table_schema(String) — 目前未使用。table_name(String) — 目前未使用。non_unique(Int32) — 目前未使用。index_schema(String) — 目前未使用。index_name(Nullable(String)) — 目前未使用。seq_in_index(UInt32) — 目前未使用。column_name(Nullable(String)) — 目前未使用。collation(Nullable(String)) — 目前未使用。cardinality(Nullable(Int64)) — 目前未使用。sub_part(Nullable(Int64)) — 目前未使用。packed(Nullable(String)) — 目前未使用。nullable(String) — 目前未使用。index_type(String) — 目前未使用。comment(String) — 目前未使用。index_comment(String) — 目前未使用。is_visible(String) — 目前未使用。expression(Nullable(String)) — 目前未使用。
Query
Response
SCHEMATA
NULL) 但标准要求必须存在的列。
列:
catalog_name(String) — 数据库名称。schema_name(String) — 数据库名称。schema_owner(String) — schema 所有者名称,始终为'default'。default_character_set_catalog(Nullable(String)) —NULL,不受支持。default_character_set_schema(Nullable(String)) —NULL,不受支持。default_character_set_name(Nullable(String)) —NULL,不受支持。sql_path(Nullable(String)) —NULL,不受支持。
Query
Response
TABLES
table_catalog(String) — 表所在数据库的名称。table_schema(String) — 表所在数据库的名称。table_name(String) — 表名。table_type(String) — 表类型。可能的值:BASE TABLEVIEWFOREIGN TABLELOCAL TEMPORARYSYSTEM VIEW
table_rows(Nullable(UInt64)) — 总行数。若无法确定,则为 NULL。data_length(Nullable(UInt64)) — 磁盘上数据的大小。若无法确定,则为 NULL。index_length(Nullable(UInt64)) — 主键、次级索引以及所有标记的总大小。table_collation(Nullable(String)) — 表的默认排序规则。始终为utf8mb4_0900_ai_ci。table_comment(Nullable(String)) — 创建表时使用的注释。
Query
Response
VIEWS
table_catalog(String) — 表所在数据库的名称。table_schema(String) — 表所在数据库的名称。table_name(String) — 表名。view_definition(String) — 视图的SELECT查询。check_option(String) —NONE,不进行检查。is_updatable(Enum8) —NO,视图不可更新。is_insertable_into(Enum8) — 显示所创建的视图是否为 materialized。可能的值:NO— 所创建的视图不是 materialized。YES— 所创建的视图是 materialized。
is_trigger_updatable(Enum8) —NO,触发器不可更新。is_trigger_deletable(Enum8) —NO,触发器不可删除。is_trigger_insertable_into(Enum8) —NO,不会向触发器中插入数据。
Query
Response
KEY_COLUMN_USAGE
constraint_catalog(String) — 当前未使用。始终为def。constraint_schema(String) — 该约束所属 schema (数据库) 的名称。constraint_name(Nullable(String)) — 约束名称。table_catalog(String) — 当前未使用。始终为def。table_schema(String) — 该表所属 schema (数据库) 的名称。table_name(String) — 具有该约束的表名称。column_name(Nullable(String)) — 具有该约束的列名称。ordinal_position(UInt32) — 当前未使用。始终为1。position_in_unique_constraint(Nullable(UInt32)) — 当前未使用。始终为NULL。referenced_table_schema(Nullable(String)) — 当前未使用。始终为NULL。referenced_table_name(Nullable(String)) — 当前未使用。始终为NULL。referenced_column_name(Nullable(String)) — 当前未使用。始终为NULL。
Query
Response
REFERENTIAL_CONSTRAINTS
constraint_catalog(String) — 当前未使用。constraint_schema(String) — 当前未使用。constraint_name(Nullable(String)) — 当前未使用。unique_constraint_catalog(String) — 当前未使用。unique_constraint_schema(String) — 当前未使用。unique_constraint_name(Nullable(String)) — 当前未使用。match_option(String) — 当前未使用。update_rule(String) — 当前未使用。delete_rule(String) — 当前未使用。table_name(String) — 当前未使用。referenced_table_name(String) — 当前未使用。