资源描述:
《理解oracle中的外连接.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、两个表:A(id,name>数据:(1,张三>(2,李四>(3,王五>B(id,name>数据:(1,学生>(2,老师>(4,校长>左连接结果:selectA.*,B.*fromAleftjoinBonA.id=B.id。1张三1学生2李四2老师3王五NULLNULL右链接结果:selectA.*,B.*fromArightjoinBonA.id=B.id。1张三1学生2李四2老师NULLNULL4校长****************补充:下面这种情况就会用到外连接比如有两个表一个是用户表,一个是交易记录表,如果我要查询每个用户的交易记
2、录就要用到左外外连接,因为不是每个用户都有交易记录。b5E2RGbCAP用到左外连接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子一样。如果不用外连接的话,比如【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询所有用户交易记录的意义了。p1EanqFDPw****************看一下结果就能明白左右连接的区别了。8/8理解oracle中的外连接术语定义保留行表:外连接条件中不包含+号的表注意:不包含+号的表是指在外连接条件中。如下例所示:whered.deptno(+>=10
3、无保留行表whered.deptno(+>=70无保留行表whered.deptno=e.deptno(+>d是保留行表表whered.deptno(+>=e.deptnoe是保留行表表whered.deptno=10不考虑,普通的连接条件whered.deptno(+>=e.deptnoande.deptno(+>=10无保留行表d和e均包含了+号DXDiTa9E3d左外连接中左边的表。右外连接中右边的表。全外连接中全部的表。替换NULL的表:左外连接中右边的表右外连接中左边的表全外连接中全部的表在全外连接中,两张表既可以保留行,也可
4、以替换NULL。当不存在匹配的行时,替换NULL的表替换NULL。如果连接操作中不存在匹配,任何在SELECT列中引用的替换NULL表的列都将替换为NULL。RTCrpUDGiT外连接的处理1取出外连接的两个表:d,e见图1,22取出满足连接条件的所有行,加上保留行表中所有不满足连接条件的行,不满足连接条件的行的组成:保留行表中的列保留原值,替换NULL的表中的列都将包含NULL。3几种特殊情况a见图3,4whered.deptno(+>=10无保留行表whered.deptno(+>=70无保留行表b.见图5,6whered.dept
5、no(+>=e.deptnoande.deptno(+>=10<==>whered.deptno=e.deptnoande.deptno=10c.见图7,8whered.deptno(+>=e.deptnoandd.deptno(+>=10<==>drightjoineon(d.deptno=e.deptnoandd.deptno=10>5PCzVD7HxAd.见图9,10whered.deptno(+>=e.deptnoandd.deptno=10<==>drightjoineond.deptno=e.deptnowhered.dep
6、tno=10jLBHrnAILg8/8附d的sql代码selectD.DEPTNOasddeptno,D.DNAME,E.EMPNO,E.DEPTNO,E.ENAME,e.deptnoasedeptnofromscott.Dd,scott.Eewhered.deptno(+>=e.deptnoandd.deptno=10selectD.DEPTNOasddeptno,D.DNAME,E.EMPNO,E.DEPTNO,E.ENAME,e.deptnoasedeptnofromscott.Ddrightjoinscott.Eeond.dep
7、tno=e.deptnowhered.deptno=10图表18/8图表2图表38/8图表4图表58/8图表6图表78/8图表8图表98/8图表10申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。8/8