今天边肖就给大家详细讲解一下SQL联合查询中内连接、外连接、交叉连接的区别。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友应该跟着边肖去看看。
对于数据库应用程序的开发来说,使用联合查询是不可避免的。SQL中常见的连接查询包括内连接、外连接和交叉连接;很多人,包括我自己,应该不是很清楚三者的区别。让我们来看看。如果使用join来连接表,缺点是内部连接。另外,开发中使用的左连接和右连接属于外连接,而外连接还包括全连接。下面,我就通过图案让你知道他们的不同。
有两张桌子,桌子A是左边的那张。b是右边的桌子。各有四条记录,其中两条同名:
1.1的结果。内连接是AB的交集。
SELECT * FROM table a table a内部联接TableB ON TableA . name=TableB . name
2.2号。LEFT [OUTER] JOIN产生表A的完整集合,而表B中匹配的有值,不匹配的用空值代替。
SELECT * FROM TableA左外部联接TableB ON TableA . name=TableB . name
3.RIGHT [OUTER] JOIN产生表B的完整集合,而表A中匹配的有值,不匹配的用空值代替。
SELECT * FROM table a table a RIGHT OUTER JOIN table b ON TableA . name=TableB . name
如左连接所示。
4.FULL [OUTER] JOIN生成A和b的并集,如果没有匹配的记录,将使用null作为值。
SELECT * FROM TableA FULL上的完全外部联接TableB . name=TableB . name
通过is NULL可以找出不匹配的值:
SELECT * FROM TableA FULL上的完全外部联接TableB . name=TableB . name
其中TableA.id为null或TableB.id为null
5.交叉联接对表A和表B中的数据执行N*M组合,即笛卡尔乘积。如果这个会议会产生4*4=16条记录,我们在开发过程中必须对数据进行筛选,所以这种很少使用。
SELECT * FROM表a交叉联接表b
通过上面的对比,相信你一眼就能看出内连接、外连接和交叉连接的区别。
补充
为什么用join最好?因为用“,”作为表连接,所以A表和B表直接生成笛卡尔积,然后用where过滤结果。但是,在联接时,表A和表B被联接,它们将根据on之后的条件进行筛选,然后根据where条件对结果进行筛选。
根据sql标准,交叉连接是笛卡尔积。但是对于mysql来说,交叉连接相当于内部连接。
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。