日期:2014-05-16 浏览次数:20521 次
Oracel提供了三种类型的集合操作:分别是并(UNION) 、交(INTERSECT)、 差(MINUS)
UNION :将多个操作的结果合并到一个查询结果中,返回查询结果的并集,自动去掉重复的部分。
UNION ALL:将多个操作的结果合并到一个查询结果中,但是保留重复的内容。
INTERSECT: 返回多个操作结果中相同的部分。
MINUS:返回两个查询结果的差集,去掉重复的部分。
基本语法格式为:
SELECT * FROM table_name 1
[union , union all , intersect , minus]
SELECT * FROM table_name2
注意:只能有一个Order by 语句 ,并且该语句要放在末尾。语句表达式要使用第一个select的列名,别名或者是位
置编号号。在select 列表中的列名和表达式在数量和数据类型上也要对应。
高级子查询
子查询:前面已经说过,即:SQL语句内部嵌套另一个select语句。内部查询要先于外边查询进行,内部查询返回的
结果要给外部查询使用。
多列子查询
在笔记7中的子查询,都是基于单列的查询,现在学习的是多列的子查询。主查询要与子查询返回的多个列进行比
较,不在是一个列。
基本语法:
SELECT * FROM table_name
where (column1 , column2) = | in (
SELECT column1 , column2 from table_name2 where ...
)
返回的结果不在是单列,而是多列。外层查询中where语句后面的多个列名要用括号括起来。
相关子查询
子查询中使用主查询的列。主查询的每一行的数据都执行一次子查询。
例,求emp表中工资大于平均工资的员工信息
select * from emp e
where sal > (
select avg(sal) from emp
where deptno = e.deptno
)
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839 KING PRESIDENT 1981/11/17&nbs