查询
从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 }