返回表的列信息。
语法
DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]
DESCRIBE 语句针对表的每一列返回一行,行中包含以下 String 类型的值:
name — 列名。
type — 列类型。
default_type — 列中使用的 默认表达式 子句:DEFAULT、MATERIALIZED 或 ALIAS。如果没有默认表达式,则返回空字符串。
default_expression — 在 DEFAULT 子句之后指定的表达式。
comment — 列注释。
codec_expression — 应用于该列的 codec。
ttl_expression — TTL 表达式。
is_subcolumn — 对于内部子列,该标志值为 1。仅当通过 describe_include_subcolumns 设置启用子列描述时,才会包含在结果中。
Nested 数据结构中的所有列都会单独列出。每个列名都带有父列名和一个点作为前缀。
要显示其他数据类型的内部子列,请使用 describe_include_subcolumns 设置。
示例
查询:
CREATE TABLE describe_example (
id UInt64, text String DEFAULT 'unknown' CODEC(ZSTD),
user Tuple (name String, age UInt8)
) ENGINE = MergeTree() ORDER BY id;
DESCRIBE TABLE describe_example;
DESCRIBE TABLE describe_example SETTINGS describe_include_subcolumns=1;
结果:
┌─name─┬─type──────────────────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ id │ UInt64 │ │ │ │ │ │
│ text │ String │ DEFAULT │ 'unknown' │ │ ZSTD(1) │ │
│ user │ Tuple(name String, age UInt8) │ │ │ │ │ │
└──────┴───────────────────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
第二个查询还会额外显示子列:
┌─name──────┬─type──────────────────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┬─is_subcolumn─┐
│ id │ UInt64 │ │ │ │ │ │ 0 │
│ text │ String │ DEFAULT │ 'unknown' │ │ ZSTD(1) │ │ 0 │
│ user │ Tuple(name String, age UInt8) │ │ │ │ │ │ 0 │
│ user.name │ String │ │ │ │ │ │ 1 │
│ user.age │ UInt8 │ │ │ │ │ │ 1 │
└───────────┴───────────────────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┴──────────────┘
DESCRIBE 语句也可以用于子查询或标量表达式:
DESCRIBE SELECT 1 FORMAT TSV;
或
DESCRIBE (SELECT 1) FORMAT TSV;
结果:
这种用法会返回指定查询或子查询结果列的元数据。在执行之前,它有助于理解复杂查询的结构。
另请参阅