一篇文章搞懂MySQL各种联结JOIN

七种join模型

在这里插入图片描述
其中左外连接,右外连接,全外连接各有两种模型

创建表

在这里插入图片描述
我们创建两张表,部门表department和员工表employee,主键都为id

内连接

在这里插入图片描述
根据内连接特点,我们可以得出7条正确结果:根据部门表的id,一行一行的和员工表的部门id匹配,有结果就显示

左外连接(第一种情况)

在这里插入图片描述
我们可以看到,左外连接的特点是LEFT OUT左边的表的departmentId和右边的表的id一行一行的匹配,包括左表所有的行,右表没有记录就用null填充

右外连接(第一种情况)

在这里插入图片描述
我么可以看到,右外连接是将RIGHT JOIN右边的表department中的id列,一行一行的与employee表匹配,可以看到employee表中并没有5的departmentId,故此行用null填充

左外连接(第二种情况)

在这里插入图片描述
显示的结果是employee表独有的一行,对比第一种情况的左外连接,我们可以看到,当department表的id为null,查询的结果就是employee表的独有结果

右外连接(第二种情况)

在这里插入图片描述
根据左外连接的情况一样,我们可以得出右外连接的特殊结果

全外连接(第一种情况)

在这里插入图片描述
mysql不支持全外连接的写法,这个时候我们需要另一种写法,使用关键字union
在这里插入图片描述
我们同样可以得出一样的结论,其原理就是将内连接的结果加上左外连接和右外连接的结果

全外连接(第二种情况)

在这里插入图片描述
我们通过整合左外连接和右外连接的第二种情况,就可以得出两表特有的结果的集合

发布了37 篇原创文章 · 获赞 11 · 访问量 3887

猜你喜欢

转载自blog.csdn.net/Alphr/article/details/104777326