Skip to main content
Returns information about table columns. Syntax
DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]
The DESCRIBE statement returns a row for each table column with the following String values:
  • name — A column name.
  • type — A column type.
  • default_type — A clause that is used in the column default expression: DEFAULT, MATERIALIZED or ALIAS. If there is no default expression, then empty string is returned.
  • default_expression — An expression specified after the DEFAULT clause.
  • comment — A column comment.
  • codec_expression — A codec that is applied to the column.
  • ttl_expression — A TTL expression.
  • is_subcolumn — A flag that equals 1 for internal subcolumns. It is included into the result only if subcolumn description is enabled by the describe_include_subcolumns setting.
All columns in Nested data structures are described separately. The name of each column is prefixed with a parent column name and a dot. To show internal subcolumns of other data types, use the describe_include_subcolumns setting. Example
Query
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;
Response
┌─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) │              │                    │         │                  │                │
└──────┴───────────────────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
The second query additionally shows subcolumns:
Response
┌─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 │
└───────────┴───────────────────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┴──────────────┘
The DESCRIBE statement can also be used with subqueries or scalar expressions:
DESCRIBE SELECT 1 FORMAT TSV;
or
DESCRIBE (SELECT 1) FORMAT TSV;
Response
1       UInt8
This usage returns metadata about the result columns of the specified query or subquery. It is useful for understanding the structure of complex queries before execution. See Also
Last modified on June 8, 2026