Hive基本查询语法---入门到入土(六)

本文详细介绍了Hive的基本查询语法,包括查询语句的组成、执行顺序和原则。重点讲解了join连接,如内连接和外连接,并以left semi join为例深入探讨其在Hive中的应用。此外,还涵盖了Hive的日志管理和Hql的不同运行方式。
摘要由CSDN通过智能技术生成

Hive基本查询语法

6.1 基本使用规则

6.1.1 基本查询语句组成

select ..
from ..
	join [tableName] on ..
	where ..
	group by ..
	having ..
	order by ..
	sort by ..
	limit ..
union | union all ...

6.1.2 执行顺序

第一步: FROM <left_table>
第二步: ON <join_condition>
第三步: <join_type> JOIN <right_table>
第四步: WHERE <where_condition>
第五步: GROUP BY <group_by_list>
第六步: HAVING <having_condition>
第七步: SELECT
第八步: DISTINCT <select_list>
第九步: ORDER BY <order_by_condition>
第十步: LIMIT <limit_number>

标准sql语句的一些规则:
-1. 列别名的使用,必须完全符合执行顺序,不能提前使用。(mysql除外)
-2. 在分组查询时,select子句中只能含有分组字段和聚合函数,不能有其他普通字段。(mysql除外)

6.1.3 查询原则

1. 尽量不使用子查询、尽量不使用in 或者not in (可以使用 [not] exists替代)
2. 尽量避免join连接查询,但是通常避免不了
3. 查询永远是小表驱动大表(小表作为驱动表)
  --注意:内连接时,默认是左表是驱动表,因此左表一定要是小表。
  --	 外连接看需求而定。  

6.2 常用子句回顾

6.2.1 where语句特点

where后不能使用聚合函数,可以使用子查询,也可以是普通函数。
条件可以是:
1. 关系表达式: =, >,>=,<,<=,!=,<>
2. 连接符号:  or,and, between .. and ..
3. 模糊查询: like   
			 %:通配符
			 _:占位符
4. [not] in
    >all(set)  >any();


注意事项:在hive的where中如果使用了子查询作为条件,等号“=”不好使,需要使用[not] in.
		换句话说,即使子查询返回的是唯一的一个值,也是集合形式。
		

6.2.2 group by语句特点

group by: 分组,通常和聚合函数搭配使用

查询的字段要么出现在group by 后面,要么出现在聚合函数里面

聚合函数:count(),sum(),max(),min(),avg()

count的执行
1. 执行效果上:
	- count(*)包括了所有的列,相当于行数,在统计结果的时候不会忽略null值
	- count(1)包括了所有列,用1代表行,在统计结果的时候也不会忽略null值
	- count(列名)只包括列名那一列,在统计结果时,会忽略null值

2.执行效率上:
	- 列名为主键,count(列名)会比count(1)快
	- 列名不为主键,count(1)会比count(列名)快
	- 如果表中有多个列并且没有主键,count&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值