Oracle 学习笔记 14 -- 集合操作和高级子查询
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学习笔记-5--】集合操作之union,intersect和minus操作
--union并操作 select e.employee_id,e.last_name from hr.employees e where e.last_name like 'C%' union se ...
- Python学习笔记-Day3-set集合操作
set集合,是一个无序且不重复的元素集合.定义方式类似字典使用{}创建 目前我们学过的数据类型: 1.字符串(str),2.整型(int),3.浮点型(float),4,列表(list) 5.元组(t ...
- 【Oracle】曾经的Oracle学习笔记(4-7)多表联合查询,子查询,动态条件查询
一.多表联合查询 二.子查询 三.动态条件查询 LESSON 4 Displaying Data from Multiple Tables------------------------------- ...
- Java 学习笔记(14)—— 文件操作
java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
- 并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理
1. 概述 1.1 什么是线程池 与jdbc连接池类似,在创建线程池或销毁线程时,会消耗大量的系统资源,因此在java中提出了线程池的概念,预先创建好固定数量的线程,当有任务需要线程去执行时,不用再去 ...
- 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计
[转] C#学习笔记14——Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空 ...
随机推荐
- ShareREC for iOS v1.0.4 已经公布
ShareREC for iOS v1.0.4 已经公布 版本号:v1.0.4 2015-3-13 1.新增视频列表的筛选排序功能 2.修复在開始录制后,没有调用结束录制直接进入社区崩溃问题 3.优化 ...
- DirectX11 学习笔记4 - 一个完整的封装框架
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- hdu(2846)Repository
Problem Description When you go shopping, you can search in repository for avalible merchandises by ...
- OEM:Enterprise Manager 无法连接到数据库实例 错误解决
今天遇到了一个Enterprise Manager 无法连接到数据库实例的错误,无法使用OEM,经过检查发现是 SYSMAN用户被锁定了,关于Enterprise Manager 无法连接到数据库实例 ...
- 由mitab学到一些关于编译和运行的理解
今天上午在鼓捣一个地图绘图程序,程序写到一半,在windows下写不下去了,原因是需要引入的第三方的mitab类库进行.mif文件的读写操作,而这个类库的windows下的.lib文件和.dll文件都 ...
- linux下解决非本机访问出现的提示
安装完毕之后发现无法用IP访问,出现以下提示 Access forbidden! New XAMPP security concept: Access to the requested directo ...
- web.config配置文件使用总结
我们在开发web系统的时候,使用web.config进行配置是司空见惯的,那么web.confg到底是什么呢?什么时候使用web.config呢?有几种使用web.config方式呢? 如果不太明白的 ...
- 【转】.NET MVC控制器分离到类库的方法
在.ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库,所以 ...
- 获取类似QQ似的时间,昨天或具体日期
最近在做一个聊天功能,并且要在用户列表上显示最后聊天时间,类似QQ的日期显示. 问群里和百度后,群里没人鸟我,网上也没搜到,最后苦于无奈只能自己封装了. 不过话说回来了,大哥与小弟的区别就是大哥写好封 ...
- Axure设计软件下载安装及注册
如图:本地计算机安装了两个版本的Axure,但8版的有问题,点击保存软件就退出了:7版本要想使用的注册授权 https://blog.csdn.net/botree_chan/article/deta ...