子查询及exists关键字

子查询及exists关键字

ID:16926030

大小:54.00 KB

页数:4页

时间:2018-08-26

子查询及exists关键字_第1页
子查询及exists关键字_第2页
子查询及exists关键字_第3页
子查询及exists关键字_第4页
资源描述:

《子查询及exists关键字》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、小石头课堂(二)子查询还记得上次我总结select语句查询顺序及连接查询时我说过个人认为连接查询很垃圾,就是能用连接查询的情况都能用子查询做到,而且从逻辑来说:子查询要容易理解的多,好了闲言少叙,下面我就浅谈一下最近学的子查询,供大家参考,也希望有不同意见的朋友能提出来,大家一起学习进步。子查询分为非相关子查询及相关子查询,另一方面来说有分为单行返回与多行返回,先说非相关子查询:所谓费相关子查询就是子查询与父查询没关系,简单说就是都是一个单独的查询语句且从逻辑上说都能执行出来,举例子:表内容如上图:下面我们开始查询,1、查询部门平均工资高于

2、30号部门平均工资的部门及该部门的平均工资:selectdeptno,avg(salary)fromemp_ygroupbydeptnohavingavg(salary)>(selectavg(salary)fromemp_ywheredeptno=30);其中子查询中语句布衣懒于父查询的条件,这就是非相关子查询、子查询返回结果只有一条所以也是单行返回的。locatedintheTomb,DongShenJiabang,deferthenextdayfocusedontheassassination.Linping,Zhejiang,1of

3、whichliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennightcame1、查询工资等于所属部门平均工资的姓名、部门及工资:selectename,deptno,salaryfromemp_ywhere(deptno,salary)in(selectdeptno,avg(salary)fromemp_ygroupbydeptno);多行返回的非相关子查询。再说相关子查询:2、查询工资大于该部门平均工资的

4、人员及工资selectename,salaryfromemp_yawherea.salary>(selectavg(salary)fromemp_ybwhereb.deptno=a.deptno);可以看出,要想查出工资大于该部门平均工资的人员,每当你取出一条记录进行查询时你必须用到该记录的部门号,因为每次都要计算该部门的平均工资,因此,子查询中的平均工资就和父查询有了联系,这就是相关子查询。同理相关子查询也有单行和多行返回值,道理同非相关子查询,在这里我就不再罗嗦了。再者子查询的位置也很灵活如:selectename,nvl((selec

5、tenamefromemp_ybwherea.manager=b.empno),'boss')fromemp_ya;(查询每个员工及其老板)selectename,salaryfromemp_ya,(selectdeptno,avg(salary)avgsalfromemp_ygroupbydeptno)bwherea.deptno=b.deptnoandsalary>avgsal;(查询工资大于该部门平均工资的人员)(在from后的子查询必须起别名)。locatedintheTomb,DongShenJiabang,deferthenex

6、tdayfocusedontheassassination.Linping,Zhejiang,1ofwhichliquorwinemasters(WuzhensaidinformationisCarpenter),whogotAfewbayonets,duetomissedfatal,whennightcameUpdates_emp_newasetann_sal=(selectann_sal*(1+ticheng/100)frome_emp_commbwherea.id=b.id)whereidin(selectidfrome_emp_co

7、mm);(更新有关两个表的记录时用关联子查询)Exists关键字:在查询系列的最后,我再说一下exists关键字,不得说一下,个人认为exists几乎是查询里面万能的,也是最不容易理解的,想理解就必须弄懂它的执行顺序,说实话我还不是太懂它,就理解的表面的意思,再这就斗胆说出来我个人对他的理解及应运吧:其实说白了查询语句select后面是我们想要的字段,from是查询的范围,where和hanving分别是约束条件,我们要做的就是将符合条件的查询出来,它操作的方式就是当约束条件为真是将查询的字段显示出来,而exists就是结合子查询返回tur

8、e或者false,对一切条件都能做出返回,因此可以说是万能的了,下面举具体的例子说明:selectdnamefromdept_yawhere[not]exists(select*

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。