被忽略的oracle外连接问题

一次面试题被问到是这样的

查询一组数据以外键做关联,关联的条件后面带个加号(+),会有什么结果

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

如果雷同,有抄袭行为,请联系,自行删除

小白进阶  不喜勿喷 谢谢~~~~~~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值