oracle心得4--集合查询@oracle中的多表连接@案例分析(二)

2014-11-24 16:16:17 · 作者: · 浏览: 2
null补充。
  2)右外连接(RIGHT OUTER JOIN)
  右外连接与左外连接相反,只是右端表中的所有元组都列出,限制左端表的数据必须满足连接条件,而不管右端表中的数据是否满足连接条件,均输出表中的内容。
  例如:同上例内容,查询语句为
SQL> select * from emp e right outer join dept d on e.deptno=d.deptno order by d.deptno;
  右外连接查询中右端表中的所有元组的信息都得到了保留。
  3)全外连接(FULL OUTER JOIN)
  全外连接查询的特点是左、右两端表中的记录都输出,如果没能找到匹配的记录,就使用NULL来代替。
  例如:同左外连接例子内容,查询语句为
  SQL> select * from emp e full outer join dept d on e.deptno=d.deptno order by d.deptno;
  全外连接查询中所有表中的元组信息都得到了保留。
交叉联接:
 交叉连接即笛卡儿乘积,是指两个关系中所有记录的任意组合。一般情况下,交叉查询是没有实际意义的。
SQL> select * from emp e cross join dept d;
备注:可以添加where子句筛选出有意义的数据。建议不使用。
自连接查询:
如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询称为自连接查询;而内自然连接查询的两个表数据,关键字是natural。同一张表在FROM字句中多次出现,为了区别该表的每一次出现,需要为表定义一个别名。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。
  例如:要求检索出员工编号为7369的上司的详细信息,查询语句为;select e1.* from emp e inner join emp e1 on e.mgr=e1.empno where e.empno=7369;
注意:对于连接查询中使用到的 inner outer是可以省略的。但为规范最好不要省略。
提高部分:
外连接的符号是 (+);左边写加号代表左边满足条件的(加号是一个或多个意思嘛!),和右边的全部;右边写加号正好相反;正好与外连接的左右命名相反,左外连接是在右边写加号,而右外连接是在左边写加号,注意理解;下面一个例字:。
SQL> select * from emp e inner join dept d on e.deptno(+)=d.deptno;
在NATURAL JOIN 子句创建等值连接时,可以使用 USING 子句指定等值连接中需要用到的列。 使用 USING 可以在有多个列满足条件时进行选择。 不要给选中的列中加上表名前缀或别名。NATURAL JOIN 和 USING 子句经常同时使用。
SQL> select * from emp e join dept d using(deptno);