语法总览
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 | 标识符 | 目标函数名,如 abs、sum、concat 等 |
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。
调试视图或表达式的推导类型是否符合预期。
示例
-- 查看简单查询的输出 SchemaDESCRIBE 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;