不等值连接查询

  • 员工工资级别
  • select e.empno,e.ename,e.sal,s.grade
  • from emp e,salgrade s
  • where e.sal between s.losal and s.hisal

外连接

  • 外连接的意义:对于某些不成立的记录,仍然希望包含在最后的结果集中。

  • 左外连接:当where e.deptno = d.deptno 不成立时,等号左边表的任意项仍被包含

  • 左外连接写法: where e.deptno = d.deptno(+)

  • 右外连接写法: where e.deptno = d.deptno(+)

  • 按部门统计员工人数:部门号,部门名称,人数, (右外连接)

  • select d.deptno, d.dname,count(e.empno)

  • from emp e,dept d

  • where e.deptno(+) = d.deptno

  • group by d.deptno, d.dname

  • order by d.deptno

层次查询

  • 只有一张表,单表查询,自连接为多表查询
  • select level, empno, ename, mgr
  • from emp
  • connect by prior empno = mgr
  • start with mgr is null
  • order by 1
  • level 为伪列,显示层次中的级别

子查询

  • 可以在主查询的where, select, having, from 后放置子查询
  • 不可以在group by后放置子查询
  • 主查询和子查询可以不是同一张表,只要子查询返回的结果主查询可用即可
  • 一般不在子查询中使用排序,但在Top-N的子查询中要排序
  • 子查询一般在主查询执行前执行完成,但相关子查询例外
  • 单行子查询(即只返回一条记录的查询)只能使用单行操作符,多行子查询只能使用多行操作符

多行子查询

  • 返回多行,使用多行比较操作符
  • in: 等于列表中的任何一个
  • any:和子查询返回的任意一个值比较(min())
  • all:和子查询返回的所有制比较(max())
  • 查询工资比30号部门任意一个员工高的员工
  • select * from emp where sal > any(select sal from emp where deptno = 30);
  • 不是老板的员工,所有的叶子节点
  • select * from emp where empno not in (select mgr from emp where mgr is not null);
  • 找到员工中工资最高的前3名
  • select rownum, empno, ename, sal
  • from (select * from emp order by sal desc)
  • where rownum <= 3;
  • 找到员工表中薪水大于本部门平均薪水的员工
  • select e.empno,e.ename,e.sal,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 e.empno, e.ename,e.sal, (select avg(sal) from emp where deptno = e.deptno) avgsal
  • from emp e
  • where e.sal > (select avg(sal) from emp where deptno = e.deptno)
  • 统计每年入职人数

    select count(*) Total,

    sum(decode(to_char(hiredate, 'yyyy'), '1980', 1, 0)) "1980",

    sum(decode(to_char(hiredate, 'yyyy'), '1981', 1, 0)) "1981",

    sum(decode(to_char(hiredate, 'yyyy'), '1982', 1, 0)) "1982",

    sum(decode(to_char(hiredate, 'yyyy'), '1987', 1, 0)) "1987"

    from emp;

分页

select *
from (select rownum r, e1.*
from (select * from emp order by sal) e1
where rownum <=8 )
where r >= 5;

oracle query的更多相关文章

  1. paip.oracle query export to insert sql

    paip.oracle query export to insert sql 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http:/ ...

  2. Oracle query that count connections by minute with start and end times provided

    数据结构类似 SQL> select * from t; B                 E                 N ----------------- ------------ ...

  3. Python中通过cx_oracle操作ORACLE数据库的封闭函数

    哈哈,看来我的SQL自动化发布,马上就全面支持ORACLE,MYSQL,POSTGRESQL,MSSQL啦... http://blog.csdn.net/swiftshow/article/deta ...

  4. 老李分享: Oracle Performance Tuning Overview 翻译

    老李分享: Oracle Performance Tuning Overview 翻译   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工 ...

  5. 数据库隔离级别深入理解(ORACLE)

    TRANSACTION_READ_UNCOMMITTED 1 这种隔离级别最低,脏读,不可重复读,幻读都会发生,我用的oracle,并没有支持这个级别,不作研究. TRANSACTION_READ_C ...

  6. redash oracle 数据源docker 镜像

    redash 官方的docker 镜像是没有包含oracle的,需要我们自己添加,参考了一个docker 镜像进行了简单的修改 Dockerfile FROM redash/redash:7.0.0. ...

  7. oracle_fdw安装及使用(无法访问oracle存储过程等对象)

    通过oracle_fdw可以访问oracle中的一些表和视图,也可以进行修改,尤其是给比较复杂的系统使用非常方便. (但不能使用oracle_fdw来访问oracle的存储过程.包.函数.序列等对象) ...

  8. sqluldr2 oracle直接导出数据为文本的小工具使用

    近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出. oracle导出数据为文本格式比较麻烦,sqluld ...

  9. 初步认知MySQL metadata lock(MDL)

    http://blog.itpub.net/26515977/viewspace-1208250/ 概述 随着5.5.3引入MDL,更多的Query被“Waiting for table metada ...

随机推荐

  1. js-input框中写入的小写小写字母全部转换成大写字母的js代码

    <input type="text" id="blinitials" name="blinitials"  onkeyup=" ...

  2. 《Visual C# 从入门到精通》第一章使用变量、操作符和表达式——读书笔记

    前言: 这个笔记是我个人总结,主要是熟练自己查看<Visual C# 从入门到精通>(第8版)这本书时,懵然起总结的想法,只是总结一些知识点,在工作项目会用得上,但是对毫无C#语言基础的, ...

  3. Django Context对象 + 过滤器 + 标签

    玩一玩上下文(context)对象 多数时间,你可以通过传递一个完全填充(full populated)的字典给 Context() 来初始化 上下文(Context) . 但是初始化以后,你也可以从 ...

  4. zookeeper: zkServer.sh status没有到主机的路由

    zookeeper: zkServer.sh status没有到主机的路由 没有到主机的路由这种问题很常见,多数是由机器的防火墙没有关闭. Ubuntu查看防火墙状态ufw status 关闭防火墙u ...

  5. [数据结构]P1.3 栈 Stack

    * 注: 本文/本系列谢绝转载,如有转载,本人有权利追究相应责任. 栈是一种先进后出的结构(FILO),常见的操作有:push 入栈.pop删除栈顶元素并返回.peek 查看栈顶元素 与其他线性结构一 ...

  6. Lab 7-3

    For this lab, we obtained the malicious executable, Lab07-03.exe, and DLL, Lab07-03.dll, prior to ex ...

  7. ajax上传下载自定义圆形滚动条

    demo地址:https://pan.baidu.com/s/1qYNYCFE 因为项目需要在上传文件的时候,知道上传的进度,所以封装了一个方法,在上传文件的时候动态显示上传进度,主要根据XMLHtt ...

  8. C++句柄解析

    C++句柄类解析 引题:在C++中,对于运行时类型识别问题.在程序中使用引用或者指针在运行时动态识别对象类型.然而使用指针或者引用却增加了用户负担(在继承体系中,没有明确的基类到派生类的转换,必须用户 ...

  9. javascript高级程序设计第3版——第一章概括

    最近发现Xmind思维导图是个好东西,刚好开始看书,被用来归纳最好不过了

  10. MapReduce(五)

    MapReduce的(五) 1.MapReduce的多表关联查询. 根据文本数据格式.查询多个文本中的内容关联.查询. 2.MapReduce的多任务窜执行的使用 多任务的串联执行问题,主要是要建立c ...