DESCRIBE

最近更新时间:2026-05-20 14:11:22

我的收藏

语法总览

DESCRIBE 是元数据查询命令,用于在不执行数据操作的前提下获取数据库、表、函数、查询结果的 Schema 信息。核心命令如下:
命令
用途
DESCRIBE DATABASE
查询数据库元数据
DESCRIBE FUNCTION
查询函数描述信息
DESCRIBE QUERY
查询结果的 Schema 元数据
DESCRIBE TABLE
查询表列信息

核心命令详情

1. DESCRIBE DATABASE

功能说明

返回数据库的元数据信息,包括数据库名称(Database Name)、描述注释(Comment)、存储路径(Location)、以及自定义属性(DBPROPERTIES)。

语法

{ DESCRIBE | DESC } DATABASE [ EXTENDED ] database_name

参数说明

参数
类型
说明
DESCRIBE / DESC
关键字
两者等价,DESC 为简写形式
database_name
标识符
目标数据库名称,可省略默认库
EXTENDED
可选修饰符
指定时返回扩展属性(含 DBPROPERTIES 全部键值对);不指定时仅返回基本元数据

示例

-- 基本模式:返回数据库名称、注释、路径、Owner 等基本信息
DESCRIBE DATABASE default;

-- 扩展模式:额外返回所有自定义数据库属性(DBPROPERTIES)
DESCRIBE DATABASE EXTENDED default;

-- 使用 DESC 简写
DESC DATABASE default;

2. DESCRIBE FUNCTION

功能说明

返回函数的详细描述信息,包括函数名称、函数类别(内置/聚合/窗口)、返回类型、参数列表及功能说明文本。

语法

{ DESCRIBE | DESC } FUNCTION [ EXTENDED ] function_name

参数说明

参数
类型
说明
DESCRIBE / DESC
关键字
两者等价
function_name
标识符
目标函数名,如 abssumconcat
EXTENDED
可选修饰符
指定时返回扩展信息(含函数源码/定义 SQL);不指定时仅返回基本描述

示例

-- 基本模式:查看标量函数描述
DESCRIBE FUNCTION abs;

-- 扩展模式:查看完整函数定义
DESCRIBE FUNCTION EXTENDED abs;

-- 聚合函数
DESCRIBE FUNCTION sum;

3. DESCRIBE QUERY

功能说明

对 SELECT 查询语句进行解析,返回其输出结果的 Schema 元数据——即各列的列名(col_name)和对应的数据类型(data_type),不实际执行查询

语法

{ DESCRIBE | DESC } QUERY select_statement

参数说明

参数
类型
说明
DESCRIBE / DESC
关键字
两者等价
select_statement
查询语句
任意合法的 SELECT ... FROM ... 语句,支持子查询、JOIN、表达式别名等

适用场景

执行复杂查询前确认输出列的数量和类型。
验证 CTAS(CREATE TABLE AS SELECT)建表后的目标表 Schema。
调试视图或表达式的推导类型是否符合预期。

示例

-- 查看简单查询的输出 Schema
DESCRIBE QUERY SELECT 1 AS id, 'hello' AS name;

-- 查看带表达式的复杂查询输出类型
DESCRIBE QUERY SELECT id, amount * 2 AS doubled, CURRENT_DATE() AS dt FROM orders LIMIT 0;

-- 使用 DESC 简写
DESC QUERY SELECT * FROM t1 JOIN t2 ON t1.id = t2.id;

4. DESCRIBE TABLE

功能说明

返回表的列定义信息(列名、数据类型、是否可为空)。支持多种变体以获取不同粒度的元数据:
变体
返回内容
基本模式
列名、数据类型、注释
EXTENDED
列信息 + 分区信息 + 存储格式 + Location + TBLPROPERTIES
FORMATTED
同 EXTENDED,但以更易读的格式化方式呈现

语法

{ DESCRIBE | DESC } [ EXTENDED | FORMATTED ] [ database_name. ] table_name [ column_name ]
说明:
column_name 用于指定查看某一列的详细信息(部分引擎支持)。

参数说明

参数
类型
说明
DESCRIBE / DESC
关键字
两者等价,DESC 为最常用简写
EXTENDED
可选修饰符
返回扩展元数据(分区、存储格式、TBLPROPERTIES 等)
FORMATTED
可选修饰符
以格式化方式返回扩展信息,可读性更强;与 EXTENDED 互斥
database_name.table_name
标识符
目标表名,可选数据库名限定
column_name
可选标识符
指定查看单列详情(可选)

输出字段说明

列名
含义
col_name
列名
data_type
数据类型
comment
列注释
(扩展模式附加)
partition_column / storage_format / location / tblproperties 等

示例

-- ====== 基本用法 ======

-- 创建测试表
CREATE EXTERNAL TABLE desc_t1 (id INT, name STRING, age INT)
USING PARQUET LOCATION 'cosn://bucket/path/desc_t1';

-- 基本列信息
DESCRIBE TABLE desc_t1;

-- 使用 DESC 简写(最常用)
DESC desc_t1;

-- ====== 扩展模式 ======

-- 返回完整元数据(分区、存储格式、Location、TBLPROPERTIES)
DESCRIBE TABLE EXTENDED desc_t1;

-- 格式化输出(同 EXTENDED,排版更清晰)
DESCRIBE TABLE FORMATTED desc_t1;

-- 带数据库名限定
DESCRIBE TABLE mydb.desc_t1;

-- ====== 与其他命令配合使用 ======

-- 配合 SHOW CREATE TABLE 查看建表语句
SHOW CREATE TABLE desc_t1;

-- 配合 SHOW PARTITIONS 查看分区列表
SHOW PARTITIONS desc_t1;