通过实例,简单理解SQL中的inner join、left join、right join之间的使用区别

前言

对于inner join、left join、right join的解释,书本的解释讲得比较专业,有时候难以理解,以下将会以最简单的方式帮助你理解这三者的区别

准备

这里先准备两张表
student(学生表)

在这里插入图片描述

stu_score(学生成绩表)
在这里插入图片描述
我们接下来都将使用两表的 id 属性进行连接

1. inner join (内连接)

简单理解:在做表连接时,选取两个表都存在的数据
在这里插入图片描述

对于inner join的sql语句如下:

select s.name,s.sex,ss.score 
from student s inner join stu_score ss 
on s.id = ss.id;

执行结果如下:
在这里插入图片描述
可见,student表中的4、5行并没有连接进来,因为在stu_score表中没有对应数据


2. left join(左连接)

简单理解:以左表为主,在做表连接时,保留左表中的数据,如果右表中没有对应的值就用空值代替
在这里插入图片描述

对于left join的sql语句如下(from 中 student 在左边 ,stu_score 在右边 ,与图示对应 ):

select s.name,s.sex,ss.score 
from student s left join stu_score ss 
on s.id = ss.id;

执行结果如下:
在这里插入图片描述
可见,保留了左表(student)中的值,但是由于右表(stu_student)中没有与之对应的id值,所以赋值为null,这样我们就可以得到所有学生的信息,并且还能知道谁没有参加考试


3. right join(右连接)

简单理解:与左连接相对应,以右表为主,在做表连接时,保留右表中的数据,如果左表中没有对应的值就用空值代替
(为了方便演示,故在右表增加了一些字段)
在这里插入图片描述
对于right join的sql语句如下(from 中 student 在左边 ,stu_score 在右边 ,与图示对应 ):

select s.name,s.sex,ss.score 
from student s right join stu_score ss 
on s.id = ss.id;

执行结果如下:
在这里插入图片描述
可见右表所有数据保留,左表中没有对应关系的数据则使用了null表示

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值