日期:2014-05-16 浏览次数:20551 次
一、集合运算操作符
?
? ? ? ? ? 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表中都存在的