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

Oracle高级查询

  • break on deptno skip 1
    查看全部
  • 不要忘记子查询语法中的小括号 形成良好的子查询的书写风格 可以使用子查询的位置:Where,select,having,from 不可以使用子查询的位置:group by 强调:from后面的子查询 主查询和子查询可以不是一张表 一般不在自查询中,使用排序;但是在Top-N分析问题中,必须对子查询排序 一般先执行子查询,再执行主查询;但相关子查询例外 单行子查询只能使用单行操作符;多行子查询只能多行操作符 注意:子查询中是Null值的问题
    查看全部
  • 层次查询在某些情况下可以替代自连接,本质上是单表查询。 例: select empno,ename,sal,mgr from emp //层次查询只涉及一张表 connect by prior empno=mgr //层次查询的条件不用where表示,而用connect by表示,上一层的员工号=当前曾的老板号 start with mgr is null或者start with empno=7839; //stsrt with表示从何处开始遍历查询,只有从根节点开始时才可以使用 * is null 的格式,其余节点都只能使用第二种格式。 此外层次查询的树的深度用level表示,可以在select语句中加入level就可以得到深度的查询结果,还可以对查询结果进行排序如order by 1; 比较自连接和层次查询的优劣: 自连接得到的查询结果比较直观但是不适合操作大表; 层次查询只涉及一张表,不产生笛卡尔积,但是得到的结果不够直观。 所以不同的查询语句有不同的特点,不是万能的!
    查看全部
  • 右外连接 select d.deptno ,d.dname,count(e.empno) from emp e,dept d where e.deptno(+)=d,deptno group by d.deptno,d.dname;
    查看全部
    0 采集 收起 来源:[Oracle] 外连接

    2015-08-20

  • 等值连接 select e.ename,e.sal,d.dname from emp e,dept d where e.deptno = d.deptno;
    查看全部
  • 笛卡尔积,多表连接的条件至少N-1个条件
    查看全部
  • 笛卡儿积的列数等于各表列数相加,行数等于各表行数相乘!
    查看全部
  • a命令(单词append的缩写,表示追加) 当我们想在一个语句之后加上一个语句时,就好像图中我想在最后加上一个desc,以便降序排列 那么我们可以直接在输入界面输入 a desc(注意必须得是两个空格或两个空格以上) 然后输入/再按回车执行就可以了
    查看全部
  • 1.where 条件中不能使用组函数,having 可以。 2.在输入顺序上,where先过滤后分组 3.如果两个可以通用,从sql优化的角度上看,尽量使用where.(where先过滤掉无关数据,对执行效率有大幅提高) 注:在sqlplus中,选中需要修改的函数,然后输入ed,按回车,就可以出来一个buf格式的记事本文件,可以在里面修改函数,保存并关闭,函数就自动进到了sqlplus的输入界面,然后输入/并回车就可以执行了
    查看全部
  • --分组函数与空值 --nvl函数使分组函数无法忽略空值 select count(*),count(nvl(comm,0)) from emp;
    查看全部
    0 采集 收起 来源:使用分组函数3

    2015-08-20

  • wm_concat(列名)行转列 select deptno 部门号,wm_concat(ename) 部门中员工的姓名 from emp group by deptno; 按照部门号分组,将相同部门号的员工以逗号分隔的形式展示到一行中
    查看全部
    0 采集 收起 来源:使用分组函数2

    2015-08-20

  • 用get语句加上路径读取进来,然后我们要执行的话就输入一个@然后加上路径,这样格式就设置好了
    查看全部
  • group by 语句的增强 group by rollup(a.b)可以理解等价于: group by a,b + group by a + group by null 相同的部门号只显示一次,不同的部门号隔2行 break on deptno skip 2
    查看全部
  • select rownum ,r,empno,ename,sal from(select rownum r,empno,ename,sal from(select rownum,enpno,ename,sal from emp order by sal desc) t1 where rownum<=8)t2 where r>=5 -DconfPath=D:\Project\git2\00_global_config_dev\00_global_config_dev -Dcatalina.base="D:\apache-tomcat-6.0.35" -Dcatalina.home="D:\Program Files\apache-tomcat-6.0.35" -Dwtp.deploy="D:\apache-tomcat-6.0.35\webapps" -Djava.endorsed.dirs="D:\Program Files\apache-tomcat-6.0.35\endorsed" -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true
    查看全部
    0 采集 收起 来源:案例1

    2018-03-22

  • a not in(10,20,null)相当于a!=10 and a!=20 and a!=null,然而a!=null永远为假, 所以要排除空值,判断是否是null值,只能用is or is not而不能用= 或者!=。 select * from emp where empno not in (select mgr from emp where mgr is not null);
    查看全部

举报

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

微信扫码,参与3人拼团

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

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