system.columns
包含所有表中列的信息。
你可以使用该表获取类似于 DESCRIBE TABLE 查询返回的信息,但可以一次性针对多个表。
来自临时表的列,仅在创建它们的会话中才能在 system.columns 中看到。此时,它们的 database 字段为空。
system.columns 表包含以下列(括号中为列类型):
database(String) — 数据库名称。table(String) — 表名。name(String) — 列名。type(String) — 列类型。position(UInt64) — 列在表中的序号位置,从 1 开始。default_kind(String) — 默认值的表达式类型(DEFAULT、MATERIALIZED、ALIAS),如果未定义则为空字符串。default_expression(String) — 默认值的表达式,如果未定义则为空字符串。data_compressed_bytes(UInt64) — 压缩数据的大小(字节)。data_uncompressed_bytes(UInt64) — 解压后数据的大小(字节)。marks_bytes(UInt64) — 标记的大小(字节)。comment(String) — 列的注释,如果未定义则为空字符串。is_in_partition_key(UInt8) — 指示该列是否在分区表达式中的标记位。is_in_sorting_key(UInt8) — 指示该列是否在排序键表达式中的标记位。is_in_primary_key(UInt8) — 指示该列是否在主键表达式中的标记位。is_in_sampling_key(UInt8) — 指示该列是否在采样键表达式中的标记位。compression_codec(String) — 压缩编解码器名称。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 值。serialization_hint(Nullable(String)) — 用于在插入时根据统计信息为该列选择序列化方式的提示。statistics(String) — 在该列上创建的统计信息类型。
示例