Join(Inner Join)、Left Join 、Right Join 和 Cross Join 的使用、区别 及 在 SQL 和 Hive SQL 中使用的区别?

为了说明函数作用,现用两张具体表student 表和sclass 表完成下面示例。

student 表数据如下:
在这里插入图片描述
sclaas 表数据如下:
在这里插入图片描述

一、Join(Inner Join)

1.定义

Inner Join(或简写为Join)是内连接,它返回两个表中存在连接匹配关系的记录。

2.特点

特点‌:只返回两个表中匹配的记录,如果某个表中的行在另一个表中没有匹配行,则这些行不会出现在结果集中

3.实例

SELECT 
 s1.id,
 s1.uname,
 s1.age,
 s2.class_name
FROM student s1
Join sclass  s2
ON s1.class_id = s2.id;

在这里插入图片描述

二、Left Join

1.定义

Left Join是左连接,它返回左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则结果集中右表的部分将显示为NULL‌

2.特点

左表的所有记录都会显示,如果右表中没有匹配的记录,则右表的部分显示为NULL‌。

3.实例

SELECT 
 s1.id,
 s1.uname,
 s1.age,
 s2.class_name
FROM student s1
Left Join sclass  s2
ON s1.id = s2.id;

在这里插入图片描述

三、Right Join

1.定义

Right Join是右连接,它返回右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记录,则结果集中左表的部分显示为NULL‌

2.特点

右表的所有记录都会显示,如果左表中没有匹配的记录,则左表的部分显示为NULL‌。

3.实例

SELECT 
 s1.id,
 s1.uname,
 s1.age,
 s2.class_name
FROM student s1
Right Join sclass  s2
ON s1.id = s2.id;

在这里插入图片描述

四、CROSS Join(笛卡尔积)

1.定义

笛卡尔积(CROSS JOIN)会返回两个表的笛卡尔积,即第一个表中的每一行与第二个表中的每一行组合生成一个新的行。如果第一个表有m行,第二个表有n行,则结果有m*n行‌

2.应用场景

适用于需要生成两个表的笛卡尔积的情况,通常用于生成测试数据或进行某些特定的计算。

3.实例

SELECT 
 s1.id,
 s1.uname,
 s1.age,
 s2.class_name
FROM student s1
Cross Join sclass  s2;

在这里插入图片描述

四、Join(Inner Join)、Left Join 、Right Join 和 Cross Join 的使用、区别 及 在 SQL 和 Hive SQL 中使用的区别

1、区别1

Hive Sql 使用连接函数Join时,不支持等值连接条件,而sql支持等值连接条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值