一次面试题被问到是这样的
查询一组数据以外键做关联,关联的条件后面带个加号(+),会有什么结果
select * from emp e,dept d where e.deptno = d.deptno(+)
这段SQL会有输出什么结果,在面试的时候是一脸懵,只有见过运算符的加号,对这种条件后面带加号(+)的闻所未闻。使用搜索引擎才发现这是目前Oracle数据库独有的,属于外关联的一种。
以oracle使用PLSQL编译器为例,其中自带emp和dept表
dept表随便插入了几条数据用于测试 勿喷~~~~~~~~~~
上述SQL语句代码块会输出这样的结果:
从数据中可以发现是不是以emp表为主然后dept表去匹配,就是和左关联是一样的。
左关联SQL语句是
select e.*,d.* from emp e left join dept d on e.deptno = d.deptno
输出的数据是一样的。
所以如果SQL语句中关联条件后带加号(+)的是附属表,不带加号是主表。和左关联、右关联是一样的。
select * from emp e,dept d where e.deptno = d.deptno(+)
相等于
select e.*,d.* from emp e left join dept d on e.deptno = d.deptno
如果雷同,有抄袭行为,请联系,自行删除
小白进阶 不喜勿喷 谢谢~~~~~~