数据库的左连接,右连接,自连接,内连接,外连接的区别

从语法层面上看,

全外连接full outer join

左连接是left outer join

右连接是right outer join

内连接是inner join

自连接是自身表与自身表进行的左右连接,需要注意的是并没有左内连接和右内连接。

左外连接

select * from A left outer join B on A.id = B.id;

左外连接是把左边作为基表,在右表中找到和左表匹配的数据组合在一块,如果没找到的话就是空,总之左表的数据会全部展示出来。

结果是返回左右表交集和左表全数据。

右外连接

select * from C right outer join D on C.id = D.id;

右外连接则刚好和左外连接相反,是把右表作为基表。在实际开发中实际上用到的右连接基本上可以改写成左连接的形式,比如下列的左右连接其实效果是一致的。

select * from A left outer join B on A.id = B.id;

select * from B right outer join A on A.id = B.id;

结果是返回左右表交集和右表全数据。

全外连接

select * from A full outer join B on A.id=B.id;

全外连接是会把左外连接和右外连接的结果整合到一起并去重。

另外,有的数据库关于外连接的outer关键字可以省略不写,但有的不能省略,如下

select * from A left join B on A.id = B.id;

select * from A right join B on A.id = B.id;

select * from A full join B on A.id = B.id;

结果是返回左右表并集。

内连接

内连接的具体语法如下,

select * from A inner join B on A.id=B.id;

顾名思义,内连接只会返回同时在A和B中满足条件,在这里也就是id在A和B中都存在并且id相同的数据,这里的inner有时候也可省略。

结果是返回左右表交集。

自连接

自连接并不是一种连接结构,而是一种逻辑上的称呼,自连接可以使用外连接也可以使用内连接。比如对表A和A自身进行内连接或者外连接筛选出想要的数据。一般大多数情况都是表A和A以外的表,但一些业务情况下可能会出现与本表连接的情况。常见的例子比如员工表,如下,张三是公司老大没有领导,李四和王五的manager_id 是1,代表张三是李四和王五的直属领导,而李四是赵六的领导,王五是甲七的领导。

+------+------+------------+
| id   | name | manager_id |
+------+------+------------+
|    1 | 张三 |          0 |
|    2 | 李四 |          1 |
|    3 | 王五 |          1 |
|    4 | 赵六 |          2 |
|    5 | 甲七 |          3 |
+------+------+------------+

此时可能就会有需求,比如查询赵六的领导是谁?就会用到自连接,语法示例如下

select B.name from emp A join emp B on A.manager_id=B.id where A.name='赵六';

查出来结果如下

+------+
| name |
+------+
| 李四 |
+------+

总结表格

连接类型语法结果特点
内连接 SELECT * FROM A INNER JOIN B 左右表交集 只返回匹配的行
左外连接 SELECT * FROM A LEFT JOIN B 左表全数据 + 左右表交集 左表为主,右表无匹配时用 NULL
右外连接 SELECT * FROM A RIGHT JOIN B 右表全数据 + 左右表交集 右表为主,左表无匹配时用 NULL
全外连接 SELECT * FROM A FULL JOIN B 左表全数据 + 右表全数据 - 重复行 左表和右表的并集
自连接 SELECT * FROM A A1 JOIN A A2 表内关联数据 同一张表与自身连接
#如果校招重来我最想改变的是##实习要如何选择和准备?##牛友打假中心#
全部评论

相关推荐

元戎启行24届秋招二面经(70分钟),摘自优秀牛油(1)项目介绍以及问题(2)RTOS系统的核心运行方式,相关信号量,互斥量等问题(3)RTOS系统任务是如何调度的,优先级问题(4)中断概念,如何中断,RTOS中的硬中断如何工作,软中断如何工作(5)RTOS系统运行中硬中断发生时,RTOS系统会如何处理(6)RTOS系统中的存在两个软中断时,系统会怎么处理(7)RTOS系统运行的环境是如何?一般在什么样的处理器运行(8)IIC的运行方式?IIC从机地址是如何配置的?主机地址是如何配置的?(9)运行过程中,如果新的IIC设备接入,主机和从机如何交换地址?(10)UART的协议,一共多少根总线,每根线的作用是什么,有什么线是不用接的?(11)UART协议一般是使用什么接口来包装的?(12)RS232和RS485的电气特性?差分电平是多少,分别对应什么逻辑?(13)linux系统中,挂载驱动最核心的东西是什么?(14)linux中,驱动是如何运行的,依赖着什么?(15)linux中如果有一个IIC设备,他的挂载流程是什么?设备树起到了什么作用?(16)你还熟悉哪些片上资源?简述SPI编程题:一道数学题目附加:(1)如何计算出计算的误差(2)如何减少时间复杂度(17)反问🔥智能驾驶!元戎启行!这些岗位热招中!25届春招补招!✅ 热招岗位:研发,职能,安全,规划,商务,市场,项目,感知,基础框架等80+个岗位✅ 已与多家车企量产合作,共同推进十余款车型的落地,2025年将有超20万辆进入消费市场✅ 人员规模超1000人,研发占比84%,清北/CMU/谷歌/微软等顶尖人才云集校招投递链接:https://app.mokahr.com/m/campus-recruitment/deeproute/145894#/home实习投递链接:https://app.mokahr.com/su/dcizug【内推码】NTAW9FW 【需手动填写】(填写推荐码优先筛选,加速流程)大家投递完可以在评论区打上姓名缩写+岗位(比如PM+LJJ),我来确认有没有内推成功喽 #春招#             #校招#             #内推#             #自动驾驶#       
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务