SQL基础查询语句
(1)简单查询
select *| [distinct] 字段名1,字段名2,... from 表名;
(2)where条件查询
select *|字段名1,字段名2,... from 表名 where 条件;
比较运算符 > < =
逻辑运算符 or / and / not
范围值 in () / between .. and ..
非空 is not null
模糊like
(3)聚合查询
select 函数(...) from 表名 [where 条件];
(4)排序查询
select * from 表名 where 条件 order by 字段名 [asc|desc];
(5)分页查询
select 字段名1,字段名2,... from 表名 limit M, N;
# M: 整数,表示从第几条索引开始
# N: 整数,表示查询多少条数据.
(6)分组查询
select 字段名1,字段名2,... from 表名 group by 分组字段名 [having 分组条件];
多表join
1)交叉连接查询
# 结果是两个表的并集
select 字段名 from A表名, B表名;
or
select 字段名 from A表名 cross join B表名;
2)内连接查询
# 结果是两个表的交集
select 字段名 from A表名 别名 join B表名 别名 on 条件 [where 查询条件];
3)外连接查询
# 左外连接
select 字段名 from A表名 别名 left [outer] join B表名 别名 on 条件;
# 右外连接
select 字段名 from A表名 别名 right [outer] join B表名 别名 on 条件;
4)自连接查询
# 把一个表想象成两个一模一样的表
# 就是表自己连接自己
Table1 a inner join Table1 b on a.Name = b.Info.
除了SQL中的join连接查询语法外,Hive还新增了两个join查询语法:
(1)全外连接
select *|字段名, 字段名, ... from 左表 full outer join 右表 on 左右表关联条件;
# 全外连接就是:(左表有,右表没有的null补全;右表有,左表没有的null补全)
(2)左半开连接
select 字段名 from A表名 别名 left semi join B表名 别名 on 条件 [where 查询条件];
# 左半开连接(LEFT SEMI JOIN)会返回左边表的记录
# 前提是其记录对于右边表满足 ON 语句中的判定条件
# 可以理解成内连接后只取左表的数据