系统表 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 | 列的标记(mark)数据大小,以字节为单位。 |
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) | 二进制数据、字符数据或文本数据和图像的最大长度,单位为字节。在 ByteHouse 中仅对 |
numeric_precision | Nullable(UInt64) | 近似数值数据、精确数值数据、整数数据或货币数据的精度。在 ByteHouse 中,它是整数类型的位宽,以及 |
numeric_precision_radix | Nullable(UInt64) | 数字系统的基数,表示近似数值数据、精确数值数据、整数数据或货币数据的精度。在 ByteHouse 中,整数类型为 2, |
numeric_scale | Nullable(UInt64) | 近似数值数据、精确数值数据、整数数据或货币数据的刻度。在 ByteHouse 中,仅对 |
datetime_precision | Nullable(UInt64) |
|
查询表 sales_db.order_details 的列信息,且只取关键字段:
SELECT name AS column_name, type AS column_type, is_in_primary_key, is_in_partition_key, default_kind FROM system.columns WHERE database = 'sales_db' AND table = 'order_details' ORDER BY position;
查询结果示例: