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

Oracle高级查询

  • 1核心:通过别名,将同一张表视为多张表 

    2select e.ename 员工姓名,b.ename 老板姓名 from emp e,emp b

     where e.mgr=b.empno;

    查看全部
    0 采集 收起 来源:[Oracle] 自连接

    2018-06-03

  • 1外连接就是为了解决:通过外链接,把对于连接条件上不成立的记录,仍然包含在最后的结果中,

    2 左外链接:当连接条件不成立的时候,等号左边的表仍然被包含  where e.deptno=d.deptno(+) 

    3右外链接:当连接条件不成立的时候,等号右边的表仍然被包含      where e.deptno(+)=d.deptno

    查看全部
    0 采集 收起 来源:[Oracle] 外连接

    2018-06-03

  • select e.ename,e.sal,s.grade

    from emp e,salgrade s 

    where e.sal between s.losal and s.hisal

    1超过一张表就属于多表查询

    2多表查询基于笛卡尔集

    3.加上自己的筛选条件(等于连接 不等于连接 外连接 自连接)

    查看全部
  • 1.笛卡尔集:emp*dept.列数相加,行数相乘

    2.通过连接条件,避免使用笛卡尔全集

    查看全部
  • groupby语句增强

     select deptno,job,sum(sal)

     from emp group by rollup(deptno,job);

    group by rollup分组等价于 group by deptno +group by job+null group by null


    工作中用法:

    select deptno,job,count(EMPNO)  from emp  group by  rollup(deptno,job)

    分别按照部门,职位统计,只按照部门统计,全数统计


    查看全部
  • select max (avg(sal))

    from emp

    group by deptno;


    查看全部
  • https://img1.sycdn.imooc.com//5b100bdc0001abc107280299.jpghttps://img1.sycdn.imooc.com//5b100c570001521f05910177.jpghttps://img1.sycdn.imooc.com//5b100d3d00018f0404360096.jpghttps://img1.sycdn.imooc.com//5b100d95000166e204260097.jpghaving与where区别

    查看全部
  • from 后面可以是表,也可以是查询语句

    查看全部
  • 使用子查询,where ,having,select(单行子查询,返回一个结果),from(查询语句,看成是一张表),group by 不能使用子查询

    查看全部
  • select sum(sal) ,

    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;

    查看全部
    0 采集 收起 来源:案例3

    2018-05-31

  • 执行计划:explain plan from select .......

    查看执行计划:select * from table(dbms_xplan.display);

    select empno,empname,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal from emp e

    where  sal>(select avg(sal) from emp where e.deptno=deptno)

    查看全部
    0 采集 收起 来源:案例2

    2018-05-29

  • select e.depno,e.empno,e.empname,f.avgsal

    from emp e,(select depno,avg(sal) avgsal from emp group by depno) f

    where e.depno=f.depno and e.sal>f.avgsal

    查看全部
    0 采集 收起 来源:案例2

    2018-05-29

  • select r,empno,empname,sal from 

    (select rownum r , empno,empname,sal

    from (select rownum,empno,empname,sal from emp where  order by sal desc ) a1  where  rownum<=8) a2

    where r>=5

    查看全部
    0 采集 收起 来源:案例1

    2018-05-29

  • group by:所有未包含在组函数中的列必须包含在group by子句中

    group by:只能使用having进行条件筛选

    break on deptno skip 2:相同的部门号只显示一次,不同的部门号跳过两行(间隔两行)

    set pagesize:设置查询页面的大小

    group by:主要应用于报表

    where:子句中不能使用组函数

     能使用where语句的不使用having


    查看全部

  •   查询工资大于部门平均工资的员工

    --相关子查询:

    select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsalfrom emp e

    where sal>(select avg(sal) from emp where deptno=e.deptno)

    --多表查询:

    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

    --比较解释计划窗口 的相关子查询比多表查询占用cpu少


    查看全部
    0 采集 收起 来源:案例2

    2018-05-21

举报

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

微信扫码,参与3人拼团

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

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