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

Oracle高级查询

  • 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.自连接的优缺点:结果直观,但不适合操作大表 层次查询的优缺点:是一个单表查询,不会产生笛卡尔集,但是他得到的结果并没有自连接那么直观 需要根据实际问题来选择用自连接还是层次查询。
    查看全部
  • e1表中的rownum是伪列,不能用>=号, 而e2表中的rownum是e1表中的第一列,所以可以用>=号
    查看全部
    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);
    查看全部
  • 单行子查询:查询结果返回一条查询记录 多行子查询:查询结果返回两条及以上的查询记录
    查看全部
  • 相关子查询
    查看全部
  • rownum 行号 伪列
    查看全部
  • 当然当中还有伪列level 最后根据伪列排列
    查看全部
  • 关键的地方是把where换成,connect by prior 条件 start with 条件
    查看全部
  • 子查询注意问题6-10
    查看全部
  • 子查询注意问题1-5
    查看全部
  • 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表示从何处开始遍历查询,只有从根节点开始时才可以使用 xxx is null 的格式,其余节点都只能使用第二种格式。 此外层次查询的树的深度用level表示,可以在select语句中加入level就可以得到深度的查询结果,还可以对查询结果进行排序如order by 1;
    查看全部
  • select e.ename 员工姓名,b.ename 老板姓名 from emp e,emp b where e.mgr=b.empno; 核心:通过表的别名,将同一张表看成多个表
    查看全部
    0 采集 收起 来源:[Oracle] 自连接

    2015-10-15

  • 外连接: 写法与叫法相反,右外连接在等号左上加上(+) 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] 外连接

    2015-10-15

  • get 路径:获取sql文件内容 @路径:设置路径下文件内容 set pagesize 10:设置页面大小
    查看全部
  • 1.使用ttitle命令设置报表的名称,col表示列的意思,15表示空15列显示“我的报表”这个标题,然后再空35个列,显示sql.pno,sql.pno表示报表的页码。 2.col也可以用来设置列的别名,比如第二行把deptno标题设置为部门号 3.break on deptno skip 1,在上一节课程已经介绍过,表示遇见重复的部门号就只显示一次,不同的部门号之间空一行
    查看全部

举报

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

微信扫码,参与3人拼团

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

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