Presto常用语句整理

时间:2022-04-27 16:55:56

查询

从0或多个表获取数据行

[ WITH with_query [, ...] ]
SELECT [ ALL | DISTINCT ] select_expr [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition]
[ UNION [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]
[ LIMIT count ]

from_item 为以下之一

table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
from_item join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]

GROUP BY子句

GROUP BY 子句对 SELECT 语句的输出进行分组, 分组中是匹配值的数据行。 Group BY 子句支持任意表达式, 包括指定列名或列序号(从1开始)。

HAVING子句

HAVING 子句与聚合函数以及 GROUP BY 子句共同使用, 用来控制选择分组。 HAVING 子句去掉不满足条件的分组。 在分组和聚合计算完成后,HAVING 对分组进行过滤。

以下示例查询 customer 表,并进行分组, 查出账户余额大于指定值的记录:

SELECT count(*), mktsegment, nationkey, CAST(sum(acctbal) AS bigint) AS totalbal
FROM customer
GROUP BY mktsegment, nationkey
HAVING sum(acctbal) > 5700000
ORDER BY totalbal DESC;

UNION子句

UNION 子句用于将多个查询语句的结果合并为一个结果集:

query UNION [ALL | DISTINCT] query

参数 ALL 或 DISTINCT 控制最终结果集包含哪些行。 如果指定参数 ALL ,则包含全部行,即使行完全相同。 如果指定参数 DISTINCT , 则合并结果集,结果集只有唯一不重复的行。 如果不指定参数,执行时默认使用 DISTINCT 。
多个union从左向右执行, 除非用括号明确指定顺序。

插入

向表中插入行。

INSERT INTO table_name query

目前尚不支持指定列名。 因此, 查询语句中的列与要插入的表中的列必须完全匹配。例如:

INSERT INTO orders SELECT * FROM new_orders;
INSERT INTO cities VALUES (1, 'San Francisco');
NSERT INTO cities VALUES (2, 'San Jose'), (3, 'Oakland');

表操作

功能 语句 描述
修改表 ALTER TABLE name RENAME TO new_name 改变一个现有表的定义
建表 CREATE TABLE table_name AS query 创建一个包含 查询 查询结果的新表
建视图 CREATE [ OR REPLACE ] VIEW view_name AS query 创建一个 查询 查询的新视图。视图是一个逻辑表, 可以在将来的查询中使用。视图不包含任何数据。 每当视图被其他查询语句使用时, 存储在视图中的查询语句都会被执行
查看表结构 DESCRIBE table_name 查看一个已经存在的表结构
删表 DROP TABLE table_name 删除一个已经存在的表
删视图 DROP VIEW view_name 删除一个已经存在的视图

显示

功能 语句 描述
显示列 SHOW COLUMNS FROM table 列出 表 中的列及其数据类型和其他属性
显示函数 SHOW FUNCTIONS 列出全部可用于查询的函数
显示分区 SHOW PARTITIONS FROM table [ WHERE … ] [ ORDER BY … ] [ LIMIT … ] 列出 表 中的分区,可以使用 WHERE 子句进行过滤, 使用 ORDER BY 子句排序,使用 LIMIT 子句限制。 这些子句与他们的在 查询 中的工作方式相同
显示库 SHOW SCHEMAS [ FROM catalog ] 列出 catalog 或当前catalog中的库
显示会话 SHOW SESSION 列出当前会话属性
显示表 SHOW TABLES [ FROM schema ] [ LIKE pattern ] 列出指定 库 或当前库中的表。 可以用 LIKE 子句控制列出的表名

解释

显示一个语句的逻辑或分布式执行方案。

EXPLAIN [ ( option [, ...] ) ] statement
option可以为以下之一:
FORMAT { TEXT | GRAPHVIZ }
TYPE { LOGICAL | DISTRIBUTED }