Oracle 学习笔记 14 -- 集合操作和高级子查询
来源:互联网 发布:触摸屏编程用什么软件 编辑:程序博客网 时间:2024/05/17 21:43
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 5000.00 10
7900 JAMES CLERK 7698 1981/12/3 2000.00 30
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
6 rows selected
EXISTS操作符
with子句
使用 WITH子句, 可以避免在 SELECT语句中重复书写相同的语句块WITH子句将该子句中的语句块执行一次并存储到用户的临时表空间中使用 WITH子句可以提高查询效率
嵌套子查询
例:查询比本部门工资高的员工信息
select deptno , ename,sal , avgsal
from emp e ,(select avg(sal) avgsal from emp group by deptno )
where sal > avgsalDEPTNO ENAME SAL AVGSAL
------ ---------- --------- ----------
30 JAMES 2000.00 1741.66666
10 CLARK 2450.00 1741.66666
30 BLAKE 2850.00 1741.66666
20 JONES 2975.00 1741.66666
20 SCOTT 3000.00 1741.66666
20 FORD 3000.00 1741.66666
10 KING 5000.00 1741.66666
10 CLARK 2450.00 2175
30 BLAKE 2850.00 2175
20 JONES 2975.00 2175
20 SCOTT 3000.00 2175
20 FORD 3000.00 2175
10 KING 5000.00 2175
20 JONES 2975.00 2916.66666
20 SCOTT 3000.00 2916.66666
20 FORD 3000.00 2916.66666
10 KING 5000.00 2916.66666
17 rows selected在from语句中,使用了子查询,查询出部门的平均工资,从而实现了员工工资与部门平均工资的比较。
- Oracle 学习笔记 14 -- 集合操作和高级子查询
- 【Oracle】day04_子查询_分页查询_DECODE_排序_集合操作_高级分组
- Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数
- Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数
- oracle 子查询、集合操作、复杂查询
- Oracle学习笔记3—子查询/集合
- 【oracle学习】3.子查询和集合运算练习
- Oracle学习笔记:高级查询
- oracle子查询和集合查询
- Oracle学习笔记摘录4-----子查询和关联查询
- Oracle学习笔记 -- day05 多表查询、连接查询、子查询、分页、行转列、集合运算
- oracle学习笔记 ---- 子查询
- ORACLE 高级子查询
- Oracle-高级子查询
- oracle 高级子查询
- Oracle 高级子查询
- oracle--子查询和集合运算
- Oracle的子查询和集合运算
- com.microsoft.sqlserver.jdbc.SQLServerException: CASE 说明中的任一结果表达式均不能是 NULL。
- sql总结
- 用Source Insight打开Linux内核源码
- Binary Search(二分法查找)
- 判断ie||ff,捕获鼠标
- Oracle 学习笔记 14 -- 集合操作和高级子查询
- 如何用正确的方法来写出质量好的软件的75条体会
- 自己写的Kmeans
- IOS 关闭键盘 退出键盘 的5种方式
- Hibernate 之 Why?
- c5 URLs and URIs - URIs
- Windows Phone 8获取设备ID
- 个人总结
- 中国特色程序员的「钱途」