Oracle学习资料概要.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle学习资料概要

oracle复杂表查询 子查询 什么是子查询 子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。 单行子查询 单行子查询是指只返回一行数据的子查询语句 请思考:显示与SMITH同部门的所有员工? 思路: 1 查询出SMITH的部门号 select deptno from emp WHERE ename = SMITH; 2 显示 SELECT * FROM emp WHERE deptno = (select deptno from emp WHERE ename = SMITH); 数据库在执行sql 是从左到右扫描的, 如果有括号的话,括号里面的先被优先执行。 oracle复杂表查询 多行子查询 多行子查询指返回多行数据的子查询 请思考:如何查询和部门10的工作相同的雇员的名字、岗位、工资、部门号 SELECT DISTINCT job FROM emp WHERE deptno = 10; SELECT * FROM emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno = 10); (注意:不能用job=..,因为等号=是一对一的) oracle复杂表查询 在多行子查询中使用all操作符 问题:如何显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号? SELECT ename, sal, deptno FROM emp WHERE sal all (SELECT sal FROM emp WHERE deptno = 30); 扩展要求: 大家想想还有没有别的查询方法。 SELECT ename, sal, deptno FROM emp WHERE sal (SELECT MAX(sal) FROM emp WHERE deptno = 30); 执行效率上, 函数高得多 在多行子查询中使用any操作符 问题:如何显示工资比部门30的任意一个员工的工资高的员工姓名、工资和部门号? SELECT ename, sal, deptno FROM emp WHERE sal ANY (SELECT sal FROM emp WHERE deptno = 30); 扩展要求: 大家想想还有没有别的查询方法。 SELECT ename, sal, deptno FROM emp WHERE sal (SELECT min(sal) FROM emp WHERE deptno = 30); oracle复杂表查询 多列子查询 单行子查询是指子查询只返回单列、单行数据,多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询是指查询返回多个列数据的子查询语句。 请思考如何查询与SMITH的部门和岗位完全相同的所有雇员。 SELECT deptno, job FROM emp WHERE ename = SMITH; SELECT * FROM emp WHERE (deptno, job) = (SELECT deptno, job FROM emp WHERE ename = SMITH); oracle复杂表查询 在from子句中使用子查询 请思考:如何显示高于自己部门平均工资的员工的信息 思路: 1. 查出各个部门的平均工资和部门号 SELECT deptno, AVG(sal) mysal FROM emp GROUP by deptno; 2. 把上面的查询结果看做是一张子表 SELECT e.ename, e.deptno, e.sal, ds.mysal FROM emp e, (SELECT deptno, AVG(sal) mysal FROM emp GROUP by deptno) ds WHERE e.deptno = ds.deptno AND e.sal ds.mysal; 如何衡量一个程序员的水平? 网络处理能力, 数据库, 程序代码的优化程序的效率要很高 oracle复杂表查询 小总结: 在这里需要说明的当在from子句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,当在from子句中使用子查询时,必须给子查询指定别名。 注意:别名不能用as,如:SELECT e.ename, e.deptno, e.sal, ds.mysal FROM emp e, (SELECT deptno, AVG(sal) mysal FROM emp GROUP by deptno) as ds WHERE e.deptno = ds.deptno AND e.sal ds.

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档