数据库之连接之外连接

1、left join是SQL语言中的查询类型,即连接查询。它的全称是左外连接(left outer join),是外连接中的一种。

2、Oracle中有三类OUTER JOIN -- 分别是LEFT,RIGHT和FULL。一个LEFT OUTER JOIN包含“左”表中的所有记录,即使它与在此连接中指定的“右”表并不存在任何匹配。

3、RIGHT OUTER JOIN包含“右”表中的所有记录,即使它与在此连接中指定的“左”表并不存在任何匹配。而一个FULL OUTER JOIN则包含左右两表中的所有记录。

 

left join(左连接)是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录。

right join(右连接),返回右表中所有记录和左表中连接字段相等的记录,即返回的记录数和右表的记录数一样。

join(等值连接),只返回两个表中连接字段相等的记录。

这些都是在网上搜的..

刚在b站看了教学视频自己总结如下:

外连接区分于内连接呢,就是不仅可以把两个表串连在一起,并且能让部分不匹配的数据展示出来,例如两个表:学生表和选课表:通过两表的学号来匹配:如果是内连接:那么

select *

from stu t join sc s

on(t.sno=sc.sno)

只会查询出学号对应的数据

 

但如果是外连接中的左外连接 left outer join

select * 

from stu t

left (outer) join sc s

on(t.sno=sc.sno)

除了显示匹配的数据,还可以显示左表的不匹配数据,即显示左表的全部数据,及时其中部分数据的学号与选课表不匹配。

即:相比于内连接查询多出的几列数据,有学生信息,没有选课信息

同理:右外连接会比内连接显示出选课表的不匹配数据     即:多出的几列信息,有选课信息,没有学生信息

全外连接会比内连接显示出学生表、选课表的不匹配数据

 但目前mysql不知道全外连接,会报错;而sqlserver和oracle支持

 

mysql的另一种全外连接变式:取左外和右外的并集

即:

select * 

from stu t

left outer join sc s

on(t.sno=sc.sno)

union

select * 

from stu t

right outer join sc s

on(t.sno=sc.sno)

 如果是union all

则是左外连接查询结果+右外查询结果,不去重,相当于集合中的A+B

 

oracle中还有求交集的函数minus mysql不支持..

posted @   XieLumeng  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示