实训5:join

一、Hive SQL Join连接操作

  • 就日常工作习惯来说,我们通常不会设计一张大表把所有类型的数据都放在一起,而是不同类型的数据设计不同的表存储。

  • 比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。

image-20210629174045794
  • 在这种情况下,有时需要基于多张表查询才能得到最终完整的结果;

  • join语法的出现是用于根据两个或多个表中的列之间的关系,从这些表中共同组合查询数据

image-20210629174145593

二、inner join 内连接

  • 内连接是最常见的一种连接,它也被称为普通连接,其中inner可以省略:inner join == join ;

  • 只有进行连接的两个表中都存在与连接条件相匹配的数据才会被留下来。

实验例子:以join_1表和join_2表为例

命令:

select j1.id,j1.name,j2.address from join_1 j1,join_2 j2 where j1.id=j2.id;
select j1.id,j1.name,j2.address from join_1 j1 join join_2 j2 on j1.id=j2.id;

image-20210629180004667

image-20210629180203342

注:两种命令均可以,但是下面一条执行效率更高。

三、left join 内连接

  • left join的核心就在于left左。左指的是join关键字左边的表,简称左表。

  • 通俗解释:join时以左表的全部数据为准,右边与之关联;左表数据全部返回,右表关联上的显示返回,关联不上的显示null返回。

Left join例子

select j_1.id,j_1.name,j_2.address from join_1 j_1 left join join_2 j_2 on j_1.id=j_2.id;

image-20210629181009433

四、right join 内连接

  • right join的核心就在于Right右。右指的是join关键字右边的表,简称右表。

  • 通俗解释:join时以右表的全部数据为准,左边与之关联;右表数据全部返回,左表关联上的显示返回,关联不上的显示null返回。

  • 很明显,right join和left join之间很相似,重点在于以哪边为准,也就是一个方向的问题。

select j_1.id,j_1.name,j_2.address from join_1 j_1 right join join_2 j_2 on j_1.id=j_2.id;

image-20210629181400818

五、full outer join 全外连接

  • full outer join 等价 full join ,中文叫做全外连接或者外连接。

  • 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行;

  • 在功能上:等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的操作将上述两个结果集合并为一个结果集。

select j_1.id,j_1.name,j_2.address from join_1 j_1 full join join_2 j_2 on j_1.id=j_2.id;

image-20210629181921696

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值