跳转到主内容
跳转到主内容

DESCRIBE TABLE

返回表列信息。

语法

DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]

DESCRIBE 语句会为表中的每个列返回一行,包含以下 String 类型的值:

  • name — 列名。
  • type — 列类型。
  • default_type — 列默认表达式中使用的子句:DEFAULTMATERIALIZEDALIAS。如果没有默认表达式,则返回空字符串。
  • 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;
1       UInt8

此用法返回指定查询或子查询结果列的元数据,有助于在执行前了解复杂查询的结构。

另请参见