为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle高级查询

  • break on 去除重复的内容,只保留一个 group by rollup(a,b)分组增强形式
    查看全部
  • 按部门统计员工的人数 函数查询: select count(*) Total,sum(to_char(hiredate,'YYYY'),'1981','1','0') "1981", Total,sum(to_char(hiredate,'YYYY'),'1981','1','0') "1982", from emp 子查询: select (select count(*) from emp) Total, (select count(*) from emp where to_char(hirdate,'YYYY')='1981') "1981", (select count(*) from emp where to_char(hirdate,'YYYY')='1982') "1982" from dual 伪表
    查看全部
    0 采集 收起 来源:案例3

    2018-03-22

  • 查询实行计划
    查看全部
    0 采集 收起 来源:案例2

    2016-02-12

  • 查询工资大于部门平均工资的员工<br> 相关子查询:<br> select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal<br> from emp e<br> where sal>(select avg(sal) from emp where deptno=e.deptno)<br> 多表查询:<br> select e.empno,e.ename,e.sal,d.avgsal<br> from emp e,(select deptno,avg(sal) avgsal from emp group by deptno) d<br> where e.deptno=d.deptno and e.sal>d.avgsal<br> 相关子查询比多表查询占用cpu少
    查看全部
    0 采集 收起 来源:案例2

    2018-03-22

  • 实例一:分页查询,4条每页,并显示第二页数据<br> select empno,ename,sal<br> from (select rownum r,empno,ename,sal<br> from (select rownum,empno,ename,sal from emp order by sal desc) e1<br> where rwonum<=8) e2<br> where r>5
    查看全部
    0 采集 收起 来源:案例1

    2018-03-22

  • rownum默认生成行号,即使用order by排序,也不会打乱rownum默认生成行号的顺序<br> 行号只能用< <= 不能用> >= select * from (select * from emp order by sal desc) where rownum<=3
    查看全部
  • 子查询需要注意的问题 不要忘记子查询语法中的小括号 形成良好的子查询的书写风格 可以使用子查询的位置:Where,select,having,from 不可以使用子查询的位置:group by 强调:from后面的子查询 主查询和子查询可以不是一张表 一般不在自查询中,使用排序;但是在Top-N分析问题中,必须对子查询排序 一般先执行子查询,再执行主查询;但相关子查询例外 单行子查询只能使用单行操作符;多行子查询只能多行操作符 注意:子查询中是Null值的问题
    查看全部
  • 1.自连接 优点:查询的结果直观 缺点:是不适合大表查询 解决办法:用层次查询 2.层次查询 优点:属于单表查询,只有单表查询才不会产生笛卡尔积 缺点:查询结果不太直观
    查看全部
  • 自连接 同一个表里相关联的数据可以使用自连接 原理是通过给同一个表取不同的别名,将其视为多张表 这样会产生一个大的笛卡尔积,当然这种方法不适用于数据量大的表,因为会导致笛卡尔积过大,运行缓慢
    查看全部
    0 采集 收起 来源:[Oracle] 自连接

    2016-02-12

  • select d.deptno,d.dname,count(e.empno) from emp e,dept d where e.deptno=d.deptno group by d.deptno,d.name; 注意这样得出的结果不完全正确,因为40号部门在员工表中不存在但是在部门表中存在,为了在结果中显示40号部门,要使用外连接!外连接的作用就是把对于连接条件不成立的记录仍然包含在最后的结果中,分为左外连接和右外连接。 特别注意左外连接和右外连接的写法,位置与名字相反,符号用括号内加号表示: 左外连接where e.deptno=d.deptno(+); 右外连接where e.deptno(+)=d.deptno;
    查看全部
    0 采集 收起 来源:[Oracle] 外连接

    2016-02-12

  • 笛卡儿积的列数等于各表列数相加,行数等于各表行数相乘。 为了避免笛卡尔集,可以在where加入有效的连接条件。 在实际运行环境下,应避免使用笛卡尔全集。
    查看全部
  • groupby语句增强<br> select deptno,job,sum(sal)<br> from emp<br> group by rollup(deptno,job);<br> <br> group by rollup分组等价于<br> group by deptno<br> +<br> group by job<br> +<br> group by null group by 语句的增强可用于做报表: break on deptno skip 2 //相同部门号只显示一次,不同部门号间隔两行 set pagesize 30 //设置每一页显示30行
    查看全部
  • a追加命令,一定要在a后面添加两个空格
    查看全部
  • order by 后可以跟 序号(代表select列中的顺序),分组函数,列名,别名
    查看全部
  • 出现在select后面的字段,且没有在分组函数中的,必须要在group by子句中声明; where子句中不能使用组函数; having用于过滤分组后的数据,与where类似; 如果过滤条件中没有分组函数时,where与having通用,那么从sql优化的角度来讲,where的效率更高,因为having是先分组再过滤,而where是先过滤再分组。
    查看全部

举报

0/150
提交
取消
课程须知
小伙伴们,学习本课程前需要掌握Oracle的语法基础,并且对Oracle的函数有所了解。如不了解这两部分内容,请移步《Oracle数据库开发必备利器之SQL基础》和《Oracle数据库开发利器之函数》两门教程。
老师告诉你能学到什么?
1、掌握分组查询 2、掌握多表查询 3、掌握子查询

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!