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

Oracle高级查询

  • decode(条件,判断条件,ture返回,false返回); to_char(parameter,格式)返回新格式内容;
    查看全部
    0 采集 收起 来源:案例3

    2018-01-15

  • 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);
    查看全部
    0 采集 收起 来源:案例2

    2018-03-22

  • 子查询的类型 (1)单行子查询:只返回一条记录 操作符:=,>,>=,<,<=,<>不等于 例子:查询员工信息,要求:职位与7566员工一样,薪水大于7782的 select * from emp where job= (select job from emp where empno=7566) and sal>(select sal from emp where empno=7782); (2)多行子查询:返回多条记录 操作符:in 等于列表中的任何一个 any 和子查询返回的任意一个值作比较 all 和子查询返回的所有值比较 例子:(1)in 查询部门名称是sales 和accounting 的员工信息 select *from emp where deptno in (select deptno from dept where dname='SALES' or dname='ACCOUNTING'); select e.* from emp e, dept d where e.deptno=d.deptno and (d.dname='SALES' or d.dname='ACCOUNTING'); (2)any 查询工资比30号部门任意一个员工高的员工信息 select * from emp where sal> any ( select sal from emp where deptno=30); select * from emp where sal>(select min(sal) from emp where deptno=30); (3)all 查询工资比30号部门所有一个员工高的员工信息 select * from emp where sal> all( select sal from emp where deptno=30); select * from emp where sal>(select max(sal) from emp where deptno=30);
    查看全部
  • ownum是伪列,oracle默认生成行号 行号需要注意的两个问题 1、行号永远按照默认的顺序生成 2、行号只能使用<,<=;不能使用>,>= select rownum,empno,ename,sal from (select * from emp order by sal desc) where rownum<=3; 将排序后的表作为一个集合放到from()中 生成一个新表 重新再查询rownum 就可以让rownum也实现排序了
    查看全部
  • 1.自连接存在的问题:不适合操作大表 解决办法:层次查询 层次查询某些情况下,可以替代自连接 本质上,是一个单表查询 比如: select empno,ename,sal,mgr from emp connect by prior empno=mgr start with empno=7839; 翻译过来就是connect by上一层的员工号=老板号 start with empno=根的号 因为根节点并没有老板,那么我们可以把start with这一句这样表示 start with mgr is null;就表示他的老板是空值. 2.层次查询中提供一个伪列:level,来表示树的深度,我们要想查树的伪列,必须在select中显式的写出来,就像这样: select level,empno,ename,sal,mgr from emp connect by prior empno=mgr start with mgr=null order by 1; 3.自连接的优缺点:结果直观,但不适合操作大表 层次查询的优缺点:是一个单表查询,不会产生笛卡尔集,但是他得到的结果并没有自连接那么直观 需要根据实际问题来选择用自连接还是层次查询。
    查看全部
  • rollup(a,b)===group by a,b;group by a;group by null
    查看全部
  • where不能使用组函数,当having与where通用时,使用where,效率高
    查看全部
  • 这个当前还没有用到过,
    查看全部
  • 这里不错,注意收藏
    查看全部
  • 子查询用了伪劣rownum,主查询拿到子查询返回的结果进行查询,这时的rownum就不再是子查询的伪劣了,而是可以作为普通的一列来查询,所以这时可以使用>符号.
    查看全部
    0 采集 收起 来源:案例1

    2018-03-22

  • SELECT CI_ID, MAX(TO_CHAR(STU_NAME)) STU_NAME FROM ( SELECT PC.CI_ID CI_ID,WM_CONCAT(PS.STU_NAME) OVER(PARTITION BY PC.CI_ID ORDER BY PS.STU_ID) STU_NAME FROM PM_CI PC,PM_STU PS WHERE INSTR(PC.STU_IDS,PS.STU_ID)>0) GROUP BY CI_ID ORDER BY CI_ID;
    查看全部
    0 采集 收起 来源:练习

    2018-03-22

  • 什么是分组函数? 分组函数作用于一组数据,并对一组数据返回一个值。
    查看全部
  • 红色叉叉,,哈哈哈
    查看全部
  • where后面不能使用组函数
    查看全部
  • 层次查询有KING 而自查询没有
    查看全部

举报

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

微信扫码,参与3人拼团

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

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