浅谈MySQL中的join查询

最近在学习关于MySQL优化的问题,涉及到了join的知识,特以此篇文章来记录一下。
查阅了一些资料,《MySQL技术内幕》中是这样说的:

1)FROM: 对FROM子句中的左表<left_table>和右表<right_table>执行笛卡儿积(Cartesian product),产生虚拟表VT1。
2)ON: 对虚拟表VT1应用ON筛选,只有那些符合<join_condition>的行才被插入虚拟表VT2中。
3)JOIN:如果指定了OUTER JOIN(如LEFT OUTER JOIN、RIGHT OUTERJOIN),那么保留表中未匹配的行作为外部行添加到虚拟表VT2中,产生虚拟表VT3。如果FROM子句包含两个以上表,则对上一个连接生成的结果表VT3和下一个表重复执行步骤1)~步骤3),直到处理完所有的表为止。

简而言之:如果是左连接,除了包含交集之外,还包含左边表中未匹配部分,右链接亦然。当然如果是内链接,单从名字上就能看出,匹配的就是交集部分。
其实就是如下图所示的情况,已经很清楚的展示了join的所有情况(图片来自于网络)
在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>