【Oracle数据库】表查询(三)
来源:互联网 发布:新东方背单词软件 编辑:程序博客网 时间:2024/06/06 21:03
Oracle的复杂查询
5.子查询
嵌套在其他sql语句中的查询语句,也叫嵌套查询
a.单行子查询
只查询一行数据的子查询语句
如何显示与SMITH同一部门员工的信息?
子查询(SMITH所在的部门)
select department from emp where empname='SMITH';
将子查询的结果添加到sql语句
执行,看下结果:
b.多行子查询
返回多行数据的子查询
如何查询做10号部门所包含的工作的员工信息?
我们先看10号部门都含有哪些岗位
然后我们找到做这些工作的员工,没错,都是做这三个岗位的。
c.在多行子查询中使用 all/any 操作符
如何显示工资比30号部门所有员工的工资都高的员工信息
当然,我们还可以使用Max函数,而且该方法的执行速度比使用all要来的快
如何显示工资比30号部门的任意一个员工的工资高(高于最低)的员工信息
当然也可以使用min函数而且执行速度更快
d.多列子查询
如何查询岗位与部门和SMITH完全相同的所有雇员,注意列的顺序必须前后对应。
e.在from语句中使用子查询
如何查询比自己所在部门的平均工资高的员工信息?
整理一下思路先:
首先,得到自己所在部门的平均工资,这样,我们得到了一张表
然后将这张表当做一张子表,进行多表查询
请揣摩理解一下。
在from语句中使用子查询时,该子查询会被当做一个视图来对待,因此叫做“内嵌视图”,当在from语句中使用子查询时 ,必须给子查询制定别名。
6.分页查询
Oracle的分页查询有三种方式,这里介绍其中的一种,rownum方式,该方法的查询速度低于rowid方式,但比rowid方式少一层select嵌套。
以查询emp表的第6~10行数据为例
第一步:将要查询的表表示为内嵌视图
from (select * from emp) a1
第二步:取1~10行的数据
注意这里rownum列的别名rn不可省,方便后续的操作。
可不可以直接在后面加条件 and rownum>=6 进行分页呢?不可以,between也不好使,这就是Oracle机制决定的,没办法。
第三步:将第二步获得的表表示为内嵌视图,再按rownum进行分页
思考,如果我只想查询指定列呢?如果我要按照指定列排序呢?如何修改sql语句?
如果想改变查询的行数范围,修改两个限定参数就可以了
- 【Oracle数据库】表查询(三)
- Oracle数据库高级查询(三)连接查询
- Oracle数据库学习(三)--基础查询及关联查询
- Oracle数据库基础(三)--查询
- (三)数据库查询
- 关于Oracle数据库删除、查询(三)
- oracle数据库SQL查询语句练习三
- oracle数据库(三)
- Oracle数据库的查询之单行函数查询(三)
- 【Oracle数据库】表查询(一)
- 【Oracle数据库】表查询(二)
- Oracle数据库(五)多表查询
- oracle查询效率(三)
- oracle查询语句(三)
- Oracle复杂查询(三)
- Oracle数据库的高级查询(多表查询)
- oracle 数据库表结构查询
- oracle 查询数据库锁表
- 近期十大优秀jQuery插件推荐
- 7个鲜为人知却超实用的PHP函数
- Mina IOBuffer
- 转载九贱的『我理解的逻辑地址、线性地址、物理地址和虚拟地址』
- 加速编码的17款最棒的CSS工具
- 【Oracle数据库】表查询(三)
- java 深拷贝 浅拷贝
- Linux系统下的数据镜像备份工具——Rsync
- 【黑马程序员】用winform做的简单计算器和Email地址分析器
- Spring 3.0 注解注入详解
- Web开发者不容错过的20段CSS代码
- [转]GSVIEW 显示不完全
- 如何运行 rpcz python example
- Cocos2d-x将win32移植到android