写点什么

MySQL 基础之八:外连接

用户头像
打工人!
关注
发布于: 2021 年 06 月 10 日
MySQL基础之八:外连接

主要内容:

本篇主要讲外连接,外连接存在的意义,以及通过案例了解外连接。

外连接与内连接的区别:

已经有了内连接,为什么还要整个外连接呢?换句话说外连接存在的意义是什么?我们可以从外连接和内连接之间的区别进行理解。

  • 内连接:在内连接中,两张表 A 和 B 没有主副之分,两张表是平等的。凡是表 A 和表 B 能够匹配上的记录会被查询出来。

  • 外连接:当表 A 和表 B 进行外连接时,这个时候就分主表和副表了,用官方话说,分驱动表和被驱动表。在左连接中,左边的表是驱动表,右边的表是被驱动表。在右连接中,右边的表是驱动表,左边的是被驱动表。举个例子:假如 A 表有姓名,学号。B 表有学号,科目,分数,但是在 B 表中某个或者某几个学生没有考试,那当然就没有考试成绩了,对应的学号也没有在 B 表中。如果 A 表做为驱动表,B 表作为被驱动表构成左连接。这几个没考试的人在 B 表中就没有记录,但是 A 表中有学号啊,由于是外连接,B 表中即使没有记录,但是会以 NULL 补齐。现在明白外连接的意义所在了吧。

小贴士:左连接有右连接的写法,右连接也有对应的左连接的写法。

那现在就来几个案例来深入了解一下吧。

案例:

案例:查出所有员工对应的领导

 select a.ename '员工',b.ename '领导' from emp a left join emp b on a.mgr=b.empno;
复制代码


从查询结果看,员工名为 KING 的人,对应的领导是 NULL。因此我们是不是也可以推断出来 KING 就是老板啊。

上面是用左连接写的,那是不是用右连接写,也可以得出同样的查询结果。

select a.ename '员工名',b.ename '领导名' from emp b right join emp a on a.mgr=b.empno;
复制代码


发布于: 2021 年 06 月 10 日阅读数: 8
用户头像

打工人!

关注

打工人! 2019.11.10 加入

InfoQ年度最佳内容获得者。 InfoQ签约作者 本人打工人一枚,自动化和控制专业入坑人一枚。目前在研究深度强化学习(DRL)技术。准备入坑互联网小白一枚。喜欢了解科技前沿技术,喜欢拍照。

评论

发布
暂无评论
MySQL基础之八:外连接