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)) — 近似数值数据、准确数值数据、整数数据或货币数据的刻度。在 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 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)) — 创建表时使用的注释。
示例
查询:
结果:
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)) — 当前未使用。