首页/数据/NoSQL 速查/SHOW / DESCRIBE 元数据查询
ClickHouse56 条

SHOW / DESCRIBE 元数据查询

查看表结构用 SHOW CREATE TABLE 与 DESCRIBE TABLE;SHOW TABLES、EXISTS TABLE 用于脚本化探测;system.columns 可按列维度筛选表结构。

NoSQL 速查数据更新于 2026-10-13

查看结构用哪些语句

看表结构主要靠两条语句:SHOW CREATE TABLE 给出完整建表语句,DESCRIBE TABLE 列出列名、类型与默认值。SHOW TABLES 与 EXISTS TABLE 用于在脚本里探测库表是否存在,配合 LIKE 可以批量筛选。

系统表能做得更细

system.tables 提供引擎、排序键、分区键与建表语句,system.columns 提供列维度的类型、默认表达式与压缩编码。需要按条件筛选或跨库比对时,查系统表比逐条执行 SHOW 更高效,返回结果也更容易被脚本消费。

基本信息

常用语句SHOW TABLES [FROM db] [LIKE ...]、SHOW CREATE TABLE t、DESCRIBE TABLE t、EXISTS TABLE t
系统表system.tables 查引擎与键定义,system.columns 查列定义与编码
过滤能力SHOW TABLES 支持 LIKE 与 NOT LIKE,也可用 FROM 限定数据库
脚本友好DESCRIBE 与 SHOW TABLES 这类结果集可加 FORMAT 便于解析
适用版本MergeTree 家族各主流版本均支持

示例

示例
SHOW CREATE TABLE analytics.events;
DESCRIBE TABLE analytics.events;
SHOW TABLES FROM analytics LIKE 'event%';
SELECT name, type, default_expression, compression_codec FROM system.columns
WHERE database = 'analytics' AND table = 'events';
SELECT engine, sorting_key, partition_key FROM system.tables
WHERE database = 'analytics' AND name = 'events';
SELECT create_table_query FROM system.tables
WHERE database = 'analytics' AND name = 'events';

典型使用场景

  • 复制结构:把 SHOW CREATE 的输出改一改,用于新表或新环境
  • 核对引擎:确认是 MergeTree 家族还是分布式表
  • 脚本探测:用 EXISTS TABLE 判断是否需要提前建表
  • 排查类型问题:列类型与预期不符时用 DESCRIBE 定位
  • 批量盘点:用 system.columns 找出缺少默认值或编码配置的列

语句与适用场景

语句输出内容适用场景
SHOW CREATE TABLE完整建表语句含列编码复制结构、核对引擎与键定义
DESCRIBE TABLE列名、类型与默认值快速确认字段,比较两表差异
SHOW TABLES当前库的表清单浏览或配合 LIKE 筛选
EXISTS TABLE存在性判断,返回 0 或 1脚本里做幂等检查
system.columns列级元数据按条件筛选与批量比对
SHOW CREATE TABLE 的输出可以直接用于复制表结构,跨环境迁移时注意连同列编码与表级设置一起带走,否则新表的压缩与写入行为会与原表不同。
DESCRIBE 不显示表引擎、排序键与分区键,核对建表定义必须看 SHOW CREATE TABLE 或 system.tables;遇到结构相似但查询快慢差很多的表,先把两份建表语句做一次比对。
跨环境比结构时不要只看列名:默认表达式与压缩编码的差异不会体现在列清单里,却会让写入与查询表现不同,核对时把两边的 SHOW CREATE 输出落到文件再逐行比对。

易错点

  • DESCRIBE 不显示引擎与排序键,只看它会漏掉分区键与列编码这些影响查询性能的定义
  • SHOW 输出的列宽随内容变化,脚本解析建议加 FORMAT JSONEachRow,避免按位置取字段时错位
  • 复制建表语句时漏掉表级设置与列编码,新表与原表的压缩率和写入行为会不一致
  • 用 LIKE 模糊匹配表名时容易连临时表一起选进来,批量操作前先列出完整清单确认范围

数据来源与参考

  • ClickHouse Docs: SHOW statements
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌