1.Hive SELECT语句
Hive查询即是SELECT语句
用于对表中的数据进行查询
按照规定的语法规则从表中选取数据
基本语法结构如下:
SELECT [ALL|DISTINCT] select_expr,select_expr,…
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY col_list]
[CLUSTER BY col_list|[DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT[offset,]rows]
2.WHERE 子句
WHERE条件必须是布尔表达式,用于过滤结果集
常用条件表达式
条件表达式 | 操作数类型 | 描述 |
A=B | 基本类型 | A与B相等返回TRUE,否则返回FALSE |
A!=B | 基本类型 | A与B不相等返回TRUE,否则返回FALSE, 如果A或B为空返回NULL |
A(>/</>=/<=)B | 基本类型 | 比较运算符所返回的内容,符合条件返回TRUE, 否则返回FALSE |
A IS [NOT] NULL | 所有类型 | A为空时返回TRUE,否则返回FALSE,可使用NOT反转 |
. | 字符串类型 | A为字符串,B为标准,如’abc’ like ‘a*’, ’abc’ like ‘a%’,’abc’ like ‘a__’均可返回TRUE,可使用NOT反转 |
A RLIKE B | 字符串类型 | 使用正则表达式匹配,A为字符串, B为正则表达式,匹配上返回TRUE |
A AND B | 布尔类型 | A,B均为TRUE返回TRUE,否则返回FALSE |
A OR B | 布尔类型 | A或B为TRUE返回TRUE,否则返回FALSE |
NOT A | 布尔类型 | A为FALSE,返回TRUE,否则返回FALSE |
!A | 布尔类型 | 同NOT A |
A [NOT] IN (val1,val2,..) | 基本类型 | A如果出现在值集合中则返回TRUE, 未出现返回FALSE,可使用NOT反转 |
3.ALL、DISTINCT、LIMIT子句
- ALL和DISTINCT子句表示是否返回重复行,默认是ALL,返回所有匹配行
- DISTINCT子句可以返回删除结果集中的重复行
- LIMIT子句用于限制SELECT语句返回的行数
4.CTE(common table expressions)
- CTE也称公共表表达式
- 它可以表示一个临时的结果集(表),该表由一个简单的查询指定,只要在范围内,均可共享该表
- CTE语法
WITH t1 AS(SELECT …) SELECT * FROM t1;
5.嵌套查询
- 也称为子查询,通常用于FROM子句之后
- 嵌套查询的常见规则:
- 必须给定名称,因为FROM子句中每个表必须有表名
- 列必须有唯一的名称,并且在外部查询中可以引用
- 可以进行UNION、JOIN操作
- Hive支持任意级别的子查询
- 嵌套查询语法
SELECT … FROM (subquery) [AS] name …
6.列匹配正则表达式
- Hive SELECT语句支持使用正则表达式指定列名称
- 凡是符合正则表达式规则的列名将被视作结果集中一列
- 列匹配正则表达式语法
SELECT ‘regex_expr’ FROM table_reference #需要设置”hive.support.quoted.identifiers”属性为”none”