Oracle学习(7):集合运算(二)

2015-07-24 11:22:56 · 作者: · 浏览: 13
CLERK 950 30 MANAGER 2850 30 SALESMAN 5600 DEPTNO JOB SUM(SAL) ---------- --------- ---------- 30 9400 29025


已选择13行。


已用时间: 00: 00: 00.00

SQL> set timing off

这儿由于数据量太少导致时间太短无法测出,在平时可以使用此种方法来检测哪一个sql语句执行时间更短,则那个sql更为好

?

INTERSECT语句

INTERSECT 运算符返回同时属于两个集合的记录

显示薪水同时位于级别1(700~1300)和级别2(1201~1400)的员工信息:

SQL> select ename,sal from emp

2 where sal between 700 and 1300
3 INTERSECT
4 select ename,sal from emp
5 where sal between 1201 and 1400;


ENAME SAL
---------- ----------
MARTIN 1250
MILLER 1300
WARD 1250

minus


MINUS返回属于第一个集合,但不属于第二个集合的记录。

显示薪水同时位于级别1(700~1300),但不属于级别2(1201~1400)的员工信息:
SQL> select ename,sal from emp 2 where sal between 700 and 1300
3 minus
4 select ename,sal from emp
5 where sal between 1201 and 1400;


ENAME SAL
---------- ----------
ADAMS 1100
JAMES 950
SMITH 800


集合运算注意事项

lselect语句中参数类型和个数要一致。 l可以使用括号改变集合执行的顺序 l如果有order by子句,必须放到每一句查询语句后 l集合运算采用第一个语句的表头作为表头