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操作符

    EXISTS操作符检查在子查询中是否存在满足条件的行,若存在。不在子查询中继续寻找。返回true,如不存
在。返回false 。继续子查询中寻找。NOT 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 > avgsal

DEPTNO 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 -- 集合操作和高级子查询的更多相关文章

  1. 【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 ...

  2. Python学习笔记-Day3-set集合操作

    set集合,是一个无序且不重复的元素集合.定义方式类似字典使用{}创建 目前我们学过的数据类型: 1.字符串(str),2.整型(int),3.浮点型(float),4,列表(list) 5.元组(t ...

  3. 【Oracle】曾经的Oracle学习笔记(4-7)多表联合查询,子查询,动态条件查询

    一.多表联合查询 二.子查询 三.动态条件查询 LESSON 4 Displaying Data from Multiple Tables------------------------------- ...

  4. Java 学习笔记(14)—— 文件操作

    java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...

  5. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  6. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  7. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  8. 并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理

    1. 概述 1.1 什么是线程池 与jdbc连接池类似,在创建线程池或销毁线程时,会消耗大量的系统资源,因此在java中提出了线程池的概念,预先创建好固定数量的线程,当有任务需要线程去执行时,不用再去 ...

  9. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14——Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

随机推荐

  1. ShareREC for iOS v1.0.4 已经公布

    ShareREC for iOS v1.0.4 已经公布 版本号:v1.0.4 2015-3-13 1.新增视频列表的筛选排序功能 2.修复在開始录制后,没有调用结束录制直接进入社区崩溃问题 3.优化 ...

  2. DirectX11 学习笔记4 - 一个完整的封装框架

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  3. hdu(2846)Repository

    Problem Description When you go shopping, you can search in repository for avalible merchandises by ...

  4. OEM:Enterprise Manager 无法连接到数据库实例 错误解决

    今天遇到了一个Enterprise Manager 无法连接到数据库实例的错误,无法使用OEM,经过检查发现是 SYSMAN用户被锁定了,关于Enterprise Manager 无法连接到数据库实例 ...

  5. 由mitab学到一些关于编译和运行的理解

    今天上午在鼓捣一个地图绘图程序,程序写到一半,在windows下写不下去了,原因是需要引入的第三方的mitab类库进行.mif文件的读写操作,而这个类库的windows下的.lib文件和.dll文件都 ...

  6. linux下解决非本机访问出现的提示

    安装完毕之后发现无法用IP访问,出现以下提示 Access forbidden! New XAMPP security concept: Access to the requested directo ...

  7. web.config配置文件使用总结

    我们在开发web系统的时候,使用web.config进行配置是司空见惯的,那么web.confg到底是什么呢?什么时候使用web.config呢?有几种使用web.config方式呢? 如果不太明白的 ...

  8. 【转】.NET MVC控制器分离到类库的方法

    在.ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库,所以 ...

  9. 获取类似QQ似的时间,昨天或具体日期

    最近在做一个聊天功能,并且要在用户列表上显示最后聊天时间,类似QQ的日期显示. 问群里和百度后,群里没人鸟我,网上也没搜到,最后苦于无奈只能自己封装了. 不过话说回来了,大哥与小弟的区别就是大哥写好封 ...

  10. Axure设计软件下载安装及注册

    如图:本地计算机安装了两个版本的Axure,但8版的有问题,点击保存软件就退出了:7版本要想使用的注册授权 https://blog.csdn.net/botree_chan/article/deta ...