LEFT JOIN、INNER JOIN和RIGHT JOIN的区别

​ 开发中,在使用两表联查的时候,不知道应该使用LEFT JOIN、ROGHT JOIN还是INNER JOIN?

​ 今天来聊一下三者的区别,开完后根据不同的情况就知道应该采用什么连接了

表示例

在这里插入图片描述

表关系,t_user表中的id=t_user_diary表中的uid

INNER JOIN

​ INNER JOIN属于内连接,使用这个连接查询两表的数据只会展示两表中符合关联条件的数据,也就是说其中一个表的一条数据和在另外一个表中没有关联的数据,那么这条数据就不会展示出来。

select
	*
from
	t_user u
inner join t_user_diary d
on u.id=d.uid

查询结果
在这里插入图片描述

​ t_user表中的id为4的用户在,t_user_diary表没有关联的数据所以没有展示id为4的用户的信息

LEFT JOIN

​ LEFT JOIN属于外连接也叫左连接,使用这个连接去查询两表数据时,左边表的数据会全部显示,如果左表(from关键字后写的表名)中的一条数据在右表(LEFT JOIN关键字后写的表名)没有关联的数据,则查询出的数据右表没有关联的数据会显示null。

select
	*
from
	t_user u
left join t_user_diary d
on u.id=d.uid

查询结果:
在这里插入图片描述

​ t_user表中的id为4的用户在右表中没有关联的数据,查询结果右表数据则会显示null

RIGHT JOIN

​ RIGHT JOIN属于外连接也叫右连接,使用这个连接去查询两表数据时,右边表的数据会全部显示,如果左表(from关键字后写的表名)中的一条数据在右表(RIGHT JOIN关键字后写的表名)没有关联的数据,则查询出的数据左表没有关联的数据会显示null。

select
	*
from
	t_user u
right join t_user_diary d
on u.id=d.uid

查询结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IPDGffxF-1681462469640)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20230414165406545.png)]

​ t_user表中id为4的用户,在t_user_diary表中没有关联的数据,但是使用的是右连接会显示右表的所有数据,所以左表id为4的信息会显示null

内连接和外连接的区别

内连接和外连接都是用于在多个表之间进行联接(JOIN)的操作,但它们之间有一些不同的区别。主要的区别如下:

  1. 内连接(INNER JOIN):只返回两个表中满足联接条件(即 ON 子句指定的条件)的行。也就是说,只有在两个表中都存在匹配的数据时才会返回结果。如果其中一个表中没有与另一个表匹配的数据,则该表中的所有行都不会出现在结果中。
  2. 外连接–左连接(LEFT JOIN):返回左侧表中的所有行以及右侧表中与其匹配的行,如果右侧表中没有与左侧表匹配的行,则返回 NULL 值。
  3. 外连接–右连接(RIGHT JOIN):返回右侧表中的所有行以及左侧表中与其匹配的行,如果左侧表中没有与右侧表匹配的行,则返回 NULL 值。

总体来说,内连接返回匹配的数据,左连接和右连接则会返回至少一个表中的所有行,并且外连接会返回所有数据,包括没有匹配的行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值