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语句中,使用了子查询,查询出部门的平均工资,从而实现了员工工资与部门平均工资的比較。

转载于:https://www.cnblogs.com/gcczhongduan/p/5200359.html

Oracle 学习笔记 14 -- 集合操作和高级子查询相关推荐

  1. NetLogo学习笔记3 —— 集合操作与生命游戏

    NetLogo学习笔记3 -- 集合操作与生命游戏 (这篇新知识点略多) 上一篇文章我们了解NetLogo模型的基本要素,学习了函数定义与ask语法.并编写了我们的第一个程序! 这一次,我们来编写一个 ...

  2. SQLServer学习笔记九:DISTINCT子句和子查询

    学习目标 使用DISTINCT消除重复,仅提取唯一记录 使用子查询返回数据,作为进一步限制要检索的条件 DISTINCT DISTINCT关键字与SELECT语句一起使用,用来消除重复,并仅提取唯一记 ...

  3. oracle 权限 策略,Oracle学习笔记(14)权限管理(

    权限管理 1.Oracle两类型的用户权限: System 使用户在数据库中完成部分行为 Object 使用户接触和操作一个特定的数据对象.只有owner(Object Schema才能授权) 2.系 ...

  4. 十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询

    一.排序分组 使用 whereColumn()方法实现两个字段相等的查询结果: //判断两个相等的字段,同样支持 orWhereColumn() //支持符号'create_time','>', ...

  5. MongoDB学习笔记~对集合属性的操作

    $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$pop操作 ...

  6. Oracle学习笔记 字符集概述

    Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...

  7. oracle update单引号,Oracle学习笔记:update的字段中包括单引号

    平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...

  8. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  9. oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型

    oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...

最新文章

  1. 3w最简单led灯电路图_12v延时关闭电路图大全
  2. jenkins调整jdk版本不生效的解决办法
  3. Shell学习笔记 - 环境变量配置文件(转)
  4. Asp.Net 数据分页
  5. 【PAT甲级 Date时间比较】1006 Sign In and Sign Out (20 分) Java版 5/5通过
  6. 疯子的算法总结14--ST算法(区间最值)
  7. python迭代对象_Python迭代对象与迭代器
  8. mysql characterencoding 枚举值_MySQL 事务锁基础部分详解
  9. 实操教程|Pytorch - 弹性训练极简实现( 附源码)
  10. 当局为器,人民为水。当局什么样,人民就什么样
  11. 关于MyBatis一级缓存、二级缓存那些事
  12. HTML Web教程
  13. python自动按键脚本
  14. 工业4.0,智能制造和大规模定制
  15. html上下两个箭头符号怎么打出来,往返双箭头符号怎么打
  16. MySQL 8.0 新特性之哈希连接(Hash Join)
  17. Android 11.0 自定义仿小米全面屏手势导航左右手势滑动返回UI效果
  18. 请将文件MP_verify_xxxxxx.txt上传至填写域名或路径指向的web服务器(或虚拟主机)的目录 曲线救国
  19. Floyd-傻子也能看懂的弗洛伊德算法(转)
  20. Moodle功能插件汇总

热门文章

  1. 为热门项目 若依(ruoyi) 添加flyway,自动管理数据库版本
  2. 公司官网无法通过域名访问,原来是tomcat配置出了问题
  3. php中系统函数的特征,老鸟需要知道的一些php系统类函数
  4. Ubuntu snap 定制内核插件
  5. 在android中怎么定义垂直,Android中的垂直(旋转)标签
  6. ArcGIS Bathymetry 管理水深数据的方法
  7. FX Composer 2 中文版快速教程
  8. 拼包函数及网络封包的异常处理
  9. C++ Coding潜意识(-ing)
  10. java类的聚合 组合定义_Java里组合和聚合的概念及其实现