理解oracle中的外连接术语定义保留行表:外连接条件中不包含+号的表注意:不包含+号的表是指在外连接条件中。如下例所示:whered.deptno(+)=10无保留行表whered.deptno(+)=70无保留行表whered.deptno=e.deptno(+)d是保留行表表whered.deptno(+)=e.deptnoe是保留行表表whered.deptno=10不考虑,普通的连接条件whered.deptno(+)=e.deptnoande.deptno(+)=10无保留行表d和e均包含了+号左外连接中左边的表。右外连接中右边的表。全外连接中全部的表。替换NULL的表:左外连接中右边的表右外连接中左边的表全外连接中全部的表在全外连接中,两张表既可以保留行,也可以替换NULL。当不存在匹配的行时,替换NULL的表替换NULL。如果连接操作中不存在匹配,任何在SELECT列中引用的替换NULL表的列都将替换为NULL。外连接的处理1取出外连接的两个表:d,e见图1,22取出满足连接条件的所有行,加上保留行表中所有不满足连接条件的行,不满足连接条件的行的组成:保留行表中的列保留原值,替换NULL的表中的列都将包含NULL。3几种特殊情况a见图3,4whered.deptno(+)=10无保留行表whered.deptno(+)=70无保留行表b.见图5,6whered.deptno(+)=e.deptnoande.deptno(+)=10==whered.deptno=e.deptnoande.deptno=10c.见图7,8whered.deptno(+)=e.deptnoandd.deptno(+)=10==drightjoineon(d.deptno=e.deptnoandd.deptno=10)d.见图9,10whered.deptno(+)=e.deptnoandd.deptno=10==drightjoineond.deptno=e.deptnowhered.deptno=10附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.deptno=e.deptnowhered.deptno=10图表1图表2图表3图表4图表5图表6图表7图表8图表9图表10