设为首页 收藏本站
查看: 955|回复: 0

[经验分享] 原创:oracle 子查询介绍 (七)

[复制链接]

尚未签到

发表于 2016-7-30 22:09:19 | 显示全部楼层 |阅读模式
  前几节课中我们渐渐的对oracle的知识,有了进一步的了解与掌握,随着时间的推移,在这节课程中我们来讲解SQL子查询的知识,希望通过授课中的内容对你有所帮助!
子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。使用子查询注意事项:子查询可以嵌套多层子查询需要圆括号()括起来子查询语法:SELECTselect_list FROMtable WHEREexpr operator(SELECTselect_list FROMtable);子查询 (内查询) 在主查询之前一次执行完成。子查询的结果被主查询使用 (外查询)。举例:查询员工的工资大于JONES的员工信息分析过程如下:首先:查询JONES的员工工资是多少 :结果2975SQL> select sal from emp where ename='JONES';实际上我们要查询的是:薪资大于2975的员工的信息写法如下:SQL> select * from emp where sal>2975;//综合以上写出子查询的结果如下:SQL> select * from emp where sal>(select sal from emp where ename='JONES');注意:子查询要包含在括号内。 将子查询放在比较条件的右侧。根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,注意:单行操作符对应单行子查询,多行操作符对应多行子查询。单行操作符>、>=、 <、 <= 、<>、=举例://查询编号7876相同职位的员工信息 并且薪资大于编号为7521的薪资的员工信息SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);//子查询含有组函数SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);//子查询含有having子句 查询部门的最小工资大于20号部门最小工资的部门号及最小工资数SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);备注:子查询可以返回空行 没要查询到结果是可以的。多行子查询 返回多行。使用多行比较操作符。操作符如下图:操作符描述In等于列表中的任何一个Any子查询返回的任意一个值比较 相同还有someAll和子查询返回的所有值比较  Exists//查询薪水小于工作岗位CLERK的任何一个薪资的员工信息 并且不包含工作岗位为CLERK的员工信息SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';//all与所有值比较 >all 代表的是大于查询结果的最大值SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';//查询岗位与部门编号为10相同的员工信息 不包含自己。SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;只做思考?SQL> select * from emp where exists(select * from dept);EMPNO ENAME  JOB        MGR HIREDATE       SAL      COMM DEPTNO----- ---------- --------- ----- ----------- --------- --------- ------7369 SMITH   CLERK   7902 1980-12-17    800.00               207499 ALLEN   SALESMAN  7698 1981-2-20   1600.00    300.00     307521 WARD   SALESMAN  7698 1981-2-22   1250.00    500.00     30…..SQL> select * from emp where exists(select * from dept where deptno=80);EMPNO ENAME  JOB        MGR HIREDATE       SAL      COMM DEPTNO----- ---------- --------- ----- ----------- --------- --------- ------以上内容版权归redarmy_chen所有,如需转载请附带出处,如有疑问请发送邮件至redarmy_chen@qq.com

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251417-1-1.html 上篇帖子: Oracle 10g expdp/impdp导入导出 下篇帖子: oracle中日期处理方法 汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表