一、SELECT语句
1.where子句
where条件必须是布尔表达式,用于过滤结果集。
2.ALL、DISTINCT子句
ALL与DISTINCT选项表示是否返回重复行,默认是ALL,即返回所有匹配的行。
3.LIMIT子句
LIMT子句用于限制SELECT语句返回的行数,其后的整型参数表示共返回多少行。
4.公共表表达式
公共表达式可以表示一个临时的结果集,该表通过一个简单的查询指定,只要在CTE语句范围内均可共享该临时表。
5.嵌套查询
通常用于FROM子句后。
6.列匹配正则表达式
Hive SELECT语句支持使用正则表达式指定列名称,凡是符合正则表达式规则的列名将被作为结果集中的一列。
7.虚拟列
虚拟列是并未在表中真正存在的列,但对于数据进行相关验证时非常有用。
二、关联查询
1.内连接 inner join
内连接:只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来。
2. 左外连接 left outer join
join操作符==左边表中==符合where子句的所有记录将会被返回。
右边表的指定字段没有符合条件的值的话,那么就使用null值替代。
案例实操:查询老师对应的课程
select * from teacher t left outer join course c on t.t_id = c.t_id;
3. 右外连接 right outer join
join操作符==右边表中==符合where子句的所有记录将会被返回。
左边表的指定字段没有符合条件的值的话,那么就使用null值替代。
案例实操
select * from teacher t right outer join course c on t.t_id = c.t_id;
4.交叉连接cross join
交叉连接的数据条数就是两个表的笛卡尔积(两表数据条数之积),交叉连接后的数据不存在配对关系,其sql甚至不需要指定连接规则。
select s.*,c.* from students s cross join class c;