博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle常用sql语句(三)之子查询
阅读量:6272 次
发布时间:2019-06-22

本文共 1741 字,大约阅读时间需要 5 分钟。

子查询

子查询要解决的问题,不能一步求解

分为:

- 单行子查询
- 多行子查询

语法:

SELECT select_list    FROM table    WHERE expr operator (SELECT select_list                         FROM   table);
  • 子查询(内查询)在住查询之前一次执行完成
  • 子查询的记过被主查询使用(外查询)

注意:

1.括号
2.合理的书写风格
3.可以在住查询的 WHERE SELECT HAVING FROM 后面使用子查询
4.不可以在GROUP BY 后面使用
5.强调FROM后面的子查询
6.主查询和子查询可以不是同一张表;只用子查询返回的结果,主查询可以使用即可
7.一般不在子查询中排序;但在top-n分析问题中
8.一般先执行子查询,在执行主查询;但相关子查询例外
9.单行子查询只能使用单行操作符;多行子查询只能使用多行子查询
10.子查询中的null:单行的子查询,多行子查询

解释:

–5、强调from后面的子查询
查询员工信息:员工号 姓名 月薪

SELECT    * FROM    ( SELECT empno, ename, sal FROM emp );

查询员工信息:员工号 姓名 月薪 年薪

SELECT    * FROM    (SELECT    empno,    ename,    sal,    sal * 12 annsal FROM    emp)

–6、主查询和子查询可以不是同一张表;只有子查询返回的结果 主查询可以使用 即可

查询部门名称是SALES的员工

SELECT    * FROM    emp WHERE    deptno = ( SELECT deptno FROM dept WHERE dname = 'SALES' );

–7.一般不在子查询中排序;但在top-n分析问题中

– 找到员工表中工资最高的三名员工

SELECT    empno,    ename,    sal FROM    ( SELECT * FROM emp ORDER BY sal DESC ) WHERE    ROWNUM < 4

8.一般先执行子查询,在执行主查询;但相关子查询例外

相关子查询:

– 找到员工表中薪水大于本部门平均薪水的员工

-- 一般方法SELECT    e.ename,    e.sal,    e.deptno,    d.avgsal FROM    emp e,    ( SELECT deptno, AVG( sal ) avgsal FROM emp GROUP BY deptno ) d WHERE    e.deptno = d.deptno     AND e.sal > d.avgsal-- 相关子查询SELECT    empno,    ename,    sal,    ( SELECT avg( sal ) FROM emp WHERE deptno = e.deptno ) avgsal FROM    emp e WHERE    sal > (SELECT avg( sal )            FROM  emp            WHERE deptno = e.deptno)

10.子查询中的null

in关键字中可以有null
not in 中有null就会查不到数据原因如下

  • not in 等同于 <>ALL

集合运算

这里写图片描述

INTERSECT(交集),返回两个查询共有的记录。

UNION ALL(并集),返回各个查询的所有记录,包括重复记录。

UNION(并集),返回各个查询的所有记录,不包括重复记录。

MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。

注意的问题:

1、参与运算的各个集合必须列数相同 且类型一致(列数不够可以用,to_number(null)、to_char(null)等去填充
2、采用第一个集合作为最后的表头
3、order by永远在最后
4、括号,改变执行顺序

你可能感兴趣的文章
oracle存储过程中is和as区别
查看>>
windows 2003 群集
查看>>
几个gcc的扩展功能
查看>>
Spark一个简单案例
查看>>
关于结构体占用空间大小总结(#pragma pack的使用)
查看>>
通过浏览器查看nginx服务器状态配置方法
查看>>
shell简介
查看>>
android 使用WebView 支持播放优酷视频,土豆视频
查看>>
怎么用secureCRT连接Linux
查看>>
C# 使用WinRar命令压缩和解压缩
查看>>
linux学习笔记一----------文件相关操作
查看>>
Mono for Android 优势与劣势
查看>>
服务器端开发技术
查看>>
Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
查看>>
ajax提交多个对象,使用序列化表单和FormData
查看>>
深入分析由前序和中序重构二叉树问题
查看>>
leetcode 题解 || Valid Parentheses 问题
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
什么是WeakHashMap--转
查看>>
js 面试题
查看>>