INFORMATION_SCHEMA
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
包含从 system.columns 系统表读取的列,以及在 ClickHouse 中不支持或没有意义(始终为 NULL
)的列,但根据标准必须存在。
列:
table_catalog
(String)— 表所在数据库的名称。table_schema
(String)— 表所在数据库的名称。table_name
(String)— 表名。column_name
(String)— 列名。ordinal_position
(UInt64)— 列在表中的顺序位置,从 1 开始。column_default
(String)— 默认值的表达式,如果未定义则为空字符串。is_nullable
(UInt8)— 表示列类型是否为Nullable
的标志。data_type
(String)— 列类型。character_maximum_length
(Nullable(UInt64))— 二进制数据、字符数据或文本数据和图像的字节最大长度。在 ClickHouse 中仅对FixedString
数据类型有意义。否则返回NULL
值。character_octet_length
(Nullable(UInt64))— 二进制数据、字符数据或文本数据和图像的字节最大长度。在 ClickHouse 中仅对FixedString
数据类型有意义。否则返回NULL
值。numeric_precision
(Nullable(UInt64))— 近似数字数据、精确数字数据、整数数据或货币数据的精度。在 ClickHouse 中,它是整数类型的位宽和Decimal
类型的十进制精度。否则返回NULL
值。numeric_precision_radix
(Nullable(UInt64))— 数字系统的基数是近似数字数据、精确数字数据、整数数据或货币数据的精度。在 ClickHouse 中对于整数类型为 2,对于Decimal
类型为 10。否则返回NULL
值。numeric_scale
(Nullable(UInt64))— 近似数字数据、精确数字数据、整数数据或货币数据的.scale。在 ClickHouse 中仅对Decimal
类型有意义。否则返回NULL
值。datetime_precision
(Nullable(UInt64))—DateTime64
数据类型的十进制精度。对于其他数据类型,返回NULL
值。character_set_catalog
(Nullable(String))—NULL
,不支持。character_set_schema
(Nullable(String))—NULL
,不支持。character_set_name
(Nullable(String))—NULL
,不支持。collation_catalog
(Nullable(String))—NULL
,不支持。collation_schema
(Nullable(String))—NULL
,不支持。collation_name
(Nullable(String))—NULL
,不支持。domain_catalog
(Nullable(String))—NULL
,不支持。domain_schema
(Nullable(String))—NULL
,不支持。domain_name
(Nullable(String))—NULL
,不支持。extra
(Nullable(String))—MATERIALIZED
类型列的STORED GENERATED
,ALIAS
类型列的VIRTUAL GENERATED
,DEFAULT
类型列的DEFAULT_GENERATED
,或者NULL
。
示例
查询:
结果:
SCHEMATA
包含从 system.databases 系统表中读取的列以及在 ClickHouse 中不支持或没有意义(始终为 NULL
)的列,但根据标准必须存在。
列:
catalog_name
(String)— 数据库的名称。schema_name
(String)— 数据库的名称。schema_owner
(String)— 模式所有者名称,始终为'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
,不支持。
示例
查询:
结果:
TABLES
包含从 system.tables 系统表读取的列。
列:
table_catalog
(String)— 表所在数据库的名称。table_schema
(String)— 表所在数据库的名称。table_name
(String)— 表名。table_type
(String)— 表类型。可能的值:BASE TABLE
VIEW
FOREIGN TABLE
LOCAL TEMPORARY
SYSTEM 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))— 创建表时使用的注释。
示例
查询:
结果:
VIEWS
包含从 system.tables 系统表读取的列,当使用表引擎 View 时。
列:
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
— 创建的视图不是物化视图。YES
— 创建的视图是物化视图。
is_trigger_updatable
(Enum8)—NO
,触发器不可更新。is_trigger_deletable
(Enum8)—NO
,触发器不可删除。is_trigger_insertable_into
(Enum8)—NO
,没有数据插入到触发器中。
示例
查询:
结果:
KEY_COLUMN_USAGE
包含来自 system.tables 系统表的列,这些列受约束限制。
列:
constraint_catalog
(String)— 当前未使用。始终为def
。constraint_schema
(String)— 约束所属的模式(数据库)名称。constraint_name
(Nullable(String))— 约束的名称。table_catalog
(String)— 当前未使用。始终为def
。table_schema
(String)— 表所属模式(数据库)的名称。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。
示例
结果:
REFERENTIAL_CONSTRAINTS
包含关于外键的信息。目前返回空结果(没有行),这只是为了与像 Tableau Online 的第三方工具提供兼容性。
列:
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)— 当前未使用。
STATISTICS
提供有关表索引的信息。目前返回空结果(没有行),这只是为了与像 Tableau Online 的第三方工具提供兼容性。
列:
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))— 当前未使用。