Oracle数据库内置了几张练习表,笔者这里用到了emp和dept。表里的数据如下所示:
首先,笔者先用ANSI SQL连接格式分别进行左右连接查询,结果如下:
对于这个结果,只要理解左右连接的原理的,都能明白。所以接下来笔者要说的是Oracle特有的连接方式:
查询结果当然是与上面ANSI SQL查询的结果是一样的,但是往往我们刚接触到的时候都会对(+)的使用有点懵逼,笔者当初就有两大错觉(欲哭无泪),一是(+)在左就左连接,在右就右连接,二是(+)在哪张表后面就先查哪张表的字段。select * from emp,dept where emp.deptno=dept.deptno(+) ------左连接 select * from emp,dept where emp.deptno(+)=dept.deptno ------右连接
正确的理解可以用两句口诀来记:
(+)在左,右连接,返回右表所有数据
(+)在右,左连接,返回左表所有数据
也可以形象一点的记忆:把(+)当成一种工具,那么谁带着这工具,谁就是仆人,另外那一张就是主人了。主人是拥有一切的,所以就显示所有数据了。
左连接右连接傻傻分不清
最新推荐文章于 2021-08-20 15:28:54 发布