inner join&left join&right join的区别?

本文详细介绍了SQL中的四种连接方式:内连接、左连接、右连接和全连接,并通过具体示例进行说明,帮助读者理解不同连接方式的特点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天复习了一下多表查询,简单做个笔记。

下面这个图很清楚的描述了各连接方式的区别:    

举个例子来了解有两张表,student、score,字段如下:

    


一、inner join(内连接,等同于等值连接)

      1、inner join :

          select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu inner join score s on stu.sid = s.sid;

      2、等值连接:

          select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu, score s where stu.sid = s.sid;

效果是一样的:

   


二、left join(左连接:包含左子表的全部记录)

select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu left join score s on stu.sid = s.sid;



三、right join(右连接:包含右子表的全部记录)

select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu right join score s on stu.sid = s.sid;



四、full join(全连接:包含左右子表的全部记录)

select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu full join score s on stu.sid = s.sid;



要注意的:在MySQL中并不支持全连接,但是我们可以使用union(会自动去除重复字段),将左右子表联合起来构造全连接,例如

select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu left join score s on stu.sid = s.sid
union
select stu.sname as 姓名, s.subject as 科目, s.grade as 分数 from student stu right join score s on stu.sid = s.sid;

这个效果跟上面的full join是一样的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值