oracle11学习资料

oracle11学习资料

ID:12499280

大小:550.50 KB

页数:45页

时间:2018-07-17

oracle11学习资料_第1页
oracle11学习资料_第2页
oracle11学习资料_第3页
oracle11学习资料_第4页
oracle11学习资料_第5页
资源描述:

《oracle11学习资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、----------------------10.子查询--------------------------------1.1子查询在外部的SELECT、UPDATE或DELETE语句内部使用SELECT语句,这个内部SELECT语句称为子查询(Subquery)。使用子查询,主要是将子查询的结果作为外部主查询的查找条件。子查询在其他查询的基础上,提供一种进一步有效的方式来表示条件。子查询是一个SELECT语句,可以在外部SELECT语句的FROM、WHERE、HAVING等子句中使用,另外在UPDATE和DELETE语句中也可以使用子查询。在子查询中

2、可以使用两种比较操作符:单行操作符和多行操作符。¡单行操作符例如=、>、>=、<、<=、<>、!=¡多行操作符例如ALL、ANY、IN、EXISTS可以把子查询分为两种类型:单行子查询和多行子查询。¡单行子查询向外部的SQL语句只返回一行数据,或者不返回任何内容。单行子查询可以放到SELECT语句的WHERE子句和HAVING子句中。¡多行子查询向外部的SQL语句返回多行。要处理返回多行记录的子查询,外部查询需要使用多行操作符。另外,子查询还有下面3种子类型,这3种子类型可以返回一行或多行查询结果:¡多列子查询向外部的SQL语句返回多列。¡关联子查询引

3、用外部的SQL语句中的一列或多列。在关联子查询中,可以使用EXISTS和NOTEXISTS操作符。¡嵌套子查询在子查询中包含有子查询。指定子查询时,需要注意以下几点:¡子查询需要使用括号(())括起来。¡子查询要放在比较操作符的右边。¡当子查询的返回值是一个集合而不是一个值时,不能使用单行操作符,而必须根据需要使用ANY、IN、ALL或EXISTS等操作符。A.内嵌视图当在FROM子句中使用子查询时,该子句会被作为视图对待,因此也被称为内嵌视图。使用子查询的一般用法形式如下:SELECTcolumn_listFROM(SELECTcolumn_name

4、FROMtable_nameWHEREconditionGROUPBYexpHAVINGhaving);例如:SELECTdeptnoFROM(SELECTdeptnoFROMscott.empGROUPBYdeptnoORDERBYCOUNT(deptno)ASCB.where在SELECT语句的WHERE子句中可以使用子查询,表示将子查询返回的结果作为外部的WHERE条件。SQL>SELECTempno,ename,sal,deptnoFROMscott.empWHEREdeptno=(SELECTdeptnoFROMscott.empWHEREe

5、mpno=7782);CHAVING在SELECT语句中使用HAVING子句,可以实现对数据进行分组过滤。在HAVING子句中,如果使用子查询,那么就可以实现对子查询返回的结果根据分组进行过滤。SQL>SELECTdeptno,AVG(sal)FROMscott.empGROUPBYdeptno2HAVINGAVG(sal)<(3SELECTAVG(sal)FROMscott.emp);1.2在UPDATE语句中使用子查询在UPDATE语句中使用子查询,可以将子查询返回的结果赋值给需要更新的列。【例】将员工编号为7839的员工的工资设置为平均工资,如下

6、:SQL>UPDATEscott.empSETsal=(2SELECTAVG(sal)FROMscott.emp)WHEREempno=7839;1.3DELETE语句中使用子查询1.4使用IN操作符实现指定匹配查询多行子查询可以向外部的SQL语句返回一行或多行记录。要处理返回多行记录的子查询,外部查询需要使用多行操作符。使用IN操作符,用来检查在一个值列表中是否包含指定的值。这个值列表可以是子查询的返回结果。例如SQL>SELECTempno,ename,sal,deptnoFROMscott.emp2WHEREdeptnoIN(3SELECTdep

7、tnoFROMscott.dept4WHEREdnameIN('ACCOUNTING','SALES'));1.4.1使用NOTIN操作符NOTIN操作符用来检查在一个值列表中是否不包含指定的值,NOTIN执行的操作正好与IN在逻辑上相反。例如:SQL>SELECTempno,ename,sal,deptnoFROMscott.emp2WHEREdeptnoNOTIN(3SELECTdeptnoFROMscott.dept4WHEREdnameIN('ACCOUNTING','SALES'));1.5使用ANY和ALL操作符a.在进行多行子查询时,使用

8、ANY操作符,用来将一个值与一个列表中的所有值进行比较,这个值只需要匹配列表中的一个值即可,然

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

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

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