日期:2014-05-16  浏览次数:20490 次

Oracle学习之集合运算

一、集合运算操作符

?

? ? ? ? ? UNION:(并集)返回两个集合去掉重复值的所有的记录

?

? ? ? ? ??UNION ALL:(并集)返回两个集合去掉重复值的所有的记录? ? ? ?

?

?? ? ? ? ??INTERSECT:(交集)返回两个集合的所有记录,重复的只取一次

?

? ? ? ? ??MINUS:(差集)返回属于第一个集合,但不属于第二个集合的所有

? ? ? ? ? ? ? ? ? ? ? ?记录

?

? ? ? ? ? ?集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结

? ? ? ?果采用第一个集合的表头作为最终的表头,order by必须放在每个

? ? ? ?集合后

?

二、集合运算

?

? ? ? ? ? 使用UNION操作符查询scott表中10部门和20部门的员工信息

SQL> select * from emp
  2  where deptno=10
  3  union
  4  select * from emp
  5  where deptno=20;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-12月-80            880                    20
      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20
      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10
      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20
      7839 KING       PRESIDENT            17-11月-81           5000                    10
      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20
      7902 FORD       ANALYST         7566 03-12月-81           3000                    20
      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

已选择8行。

?? ? ? ? ??使用UNION操作符统计scott用户下emp表中得各个部门的总工资,

? ? ? ?和各部门各职位的工资

SQL> break on deptno skip 2;
SQL> select deptno,job,sum(sal) from emp group by deptno,job
  2  union
  3  select deptno,to_char(null),sum(sal) from emp group by deptno
  4  union
  5  select to_number(null),to_char(null),sum(sal) from emp;

    DEPTNO JOB         SUM(SAL)
---------- --------- ----------
        10 CLERK           1300
           MANAGER         2450
           PRESIDENT       5000
                           8750


        20 ANALYST         6000
           CLERK           1980
           MANAGER         2975
                          10955


        30 CLERK            950
           MANAGER         2850
           SALESMAN        5600
                           9400


                          29105



已选择13行。

?? ? ? ? ??使用UNION ALL操作符查询scott用户下dept表中的信息

SQL> select * from dept
  2  union all
  3  select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

已选择8行。

??? ? ? ? ??使用INTERSECT操作符查询scott用户下dept表和emp表中都存在的