- 浏览: 345406 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
苍ing:
的确很郁闷啊。同时用代码生成的页眉页脚,wps打开时看不到页眉 ...
iText生成word代码及jar包(含页眉页脚) -
jinhuazhe:
写的挺好的,有用
Unix 环境变量设置 -
zoboy:
iText生成word代码及jar包(含页眉页脚) -
zhangxy2188:
下载不了哦,请楼主重新提供一下,谢谢!
cognos10下载 -
housen1987:
shuai_94250 写道licence无效啊,麻烦您指点一 ...
Sybase数据库客户端——Auqa Data Studio 7.5(破解版)
认证目标:
- 定义子查询
- 描述子查询能够解决的问题的类型
- 列举子查询的类型
- 写单行和多行子查询
8.1 定义子查询
子查询是嵌套在select、insert、update或delete语句内或者其他子查询内的查询。
子查询为父查询返回一行或多行。
标量子查询(scalar subquery):只返回一个值的查询,一行或一列。
查询中可以使用子查询的位置:
-
- 列投影的select列表
- from字句中
- where字句中
- having字句中
子查询又叫做内部查询(inner query),含有内部查询的语句称为外部查询(outer query)。
- 练习8.1
子查询的类型:
(1) 写一个子查询,在列投影使用子查询,该查询会报告当前部门和员工数量:
select sysdate today,( select count(*) from departments) department_number, (select count(*) from employees) employee_number from dual
(2) 写一个子查询,来确定所有是经理的员工:
思路:首先找出经理的MANAGER_ID是什么,然后再用子查询在employees表中寻找。
select * from employees where employee_id in (select manager_id from employees)
(3) 写一个子查询,来确定每个国家支付的最高薪水
select max(a.salary),c.country_id from employees a join departments b on(a.department_id=b.department_id) join locations c on(b.location_id=c.location_id) group by country_id
8.2 描述子查询能够解决的问题的类型
在许多情况下,需要将一个查询的结果作为另一个查询的输入。
- 将子查询的结果用于比较
哪些员工的薪水低于平均薪水?
select * from employees where salary < (select avg(salary) sal from employees)
查询拥有一名或多名员工的部门:
select * from departments where department_id in (select distinct department_id from employees)
或者:
select department_name from departments join employees using(department_id) group by department_name;
【注意】:使用NOT IN会因为SQL处理NULL的方式带来问题,因此,通常不要使用NOT IN,除非您确定结果集中不包含NULL。
- 星形转换(Star Transformation)
Oracle内部有一个实例初始化参数STAR_TRANSFORMATION_ENABLED,如果设置它为true时,Oracle查询优化器会讲代码重写为星形查询。
- 生成执行select语句的表
可以在from字句中使用子查询,称为内联视图(inline views)
如果查询一个国家的员工的平均薪水:
select avg(salary) average,country_name from (select * from employees a join departments b on a.department_id =b.department_id join locations c on b.location_id=c.location_id join countries d on c.country_id=d.country_id ) group by country_name
- 生成投影值
在查询select中使用子查询。
最高薪水的员工,有最高的佣金率,那么需要支付的佣金是多少?
select (select max(salary) from employees) *(select max(commission_pct) from employees) sal from dual;
- 生成传递给DML语句的行
我想插入一条名称来自于departments的表的数据到regions表中。
insert into regions select 104,department_name from where manager_id=200
【注意】:
- 不能再values字句中出现select,除非它是单个值
- DML中的select子句的列投影名称可以与目标列不同,但是数据类型必须一一对应。
- 已知的值,可以直接写在子句select中充当一列。
查询在英国的部门工作的员工:
select * from employees where department_id in (select department_id from departments where location_id in(select location_id from locations where country_id = 'UK'))
确定薪水高于平均值,且在IT部门工作的员工
select * from employees where salary > (select avg(salary) from employees) and department_id in (select department_id from departments where department_name like '%IT%')
8.3 列举子查询的类型
子查询可以分为3类:
- 单行子查询
- 多行子查询
- 关联子查询
- 单行和多行子查询
单行子查询返回一行。
标量子查询返回一行一列。
多行子查询返回行集合。
可以在父查询的where和having子句中使用单行和多行子查询。
适用于单行子查询的比较运算符:=,>,>=,<,<=,<>
适用于多行子查询的比较运算符:IN,NOT IN,ANY,ALL
写一个查询,获得高于本部门平均工资的员工:
select * from employees a, (select avg(salary) salary,department_id from employees group by department_id) b where a.department_id = b.department_id and a.salary > b.salary;
写一个查询确定谁的工资比Mr.Tobias高:
select * from employees where salary > (select salary from employees where lower(last_name) = 'tobias')
ANY和ALL的使用:
运算符 | 含义 |
<ANY | 小于最高 |
>ANY | 大于最低 |
=ANY | 等于IN |
>ALL | 大于最高 |
<ALL | 小于最低 |
查询工资高于80部门的任何员工的员工:
select * from employees where salary > ALL (select salary from employees where department_id = 80)
发表评论
-
存储过程返回多个结果集
2012-07-20 13:54 7402对于查询试的存储过程,一般会返回一个结果集,这个时候,使用正常 ... -
Oracle学习第三课(启动oracle)
2012-01-19 10:39 38【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
oracle锁表与解除锁定
2012-01-17 13:50 3207SELECT s.sid,s.serial# as seria ... -
Oracle学习第二课(登出oracle和删除用户)
2012-01-14 19:43 4080【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
Oracle学习第一课(登录oracle和创建用户)
2012-01-14 18:16 53401【学习是螺旋上升的过程,由易到难,由少到多,由点到面,每一个步 ... -
oracle sqlplus出现中文乱码
2012-01-13 22:24 1756使用下面语句设置当前session的语言环境: ... -
oracle中如何创建dblink
2012-01-12 16:56 1585当用户要跨本地数据库 ... -
安装完Oracle之后没有isqlplus服务
2012-01-12 01:15 1581在命令行中运行isqlplusctl start命令即可。 -
Osgi SpringDM struts2 学习笔记
2012-01-09 10:40 3272本笔记针对Spring-dynami ... -
JAR 文件规范(年底了,最近两天比较忙,可能要慢一点)
2012-01-07 13:03 3987英文版本: http://docs.oracle. ... -
第18章 Moving Data
2011-12-29 00:14 916certification objectives: D ... -
第11章 Managing Undo Data(管理撤销数据)
2011-12-24 17:55 1126certification objectives Ex ... -
Introduction to the Oracle Server Technologies(Oracle服务器技术介绍)
2011-12-22 21:33 1263certification objectives: Pos ... -
Exploring the database architecture(探索数据库架构)
2011-12-21 22:46 1013certification objectives: ... -
第七章 显示多个表中的数据
2011-12-18 17:08 1559认证目标: 使用同等连接和非同等连接编写select子 ... -
最简单的Oracle数据恢复 select ... as of
2011-12-09 10:20 5780概念: You perform a Flashback Qu ... -
cognos10下载
2011-12-08 22:10 2950cognos10 for windows下载地址: ... -
Oracle建立HR模式
2011-11-18 10:32 9705官方帮助 写道 Installing the HR Sch ... -
Oracle 权限、角色和安全规则
2011-11-16 15:54 1417权限 权限是执行某种类型的SQL语句和访问其他用户对象的 ... -
Oracle性能监视
2011-11-16 11:43 1238反应性监视(reactive) 10g以前的监视方法,事 ...
相关推荐
本章我们将深入探讨如何使用子查询来解决复杂的数据库查询问题。 1. 查询和BLAKE相同部门的员工姓名和雇用日期: 使用子查询来找出与BLAKE相同部门的部门ID,然后在主查询中查找所有属于该部门的员工。 2. 查询...
在本章中,我们通过一系列实例来学习如何使用子查询解决实际问题。 1. **查询和Zlotkey相同部门的员工姓名和工资**: 这个例子中,子查询用于获取名为Zlotkey的员工所在部门ID,然后外层查询从employees表中筛选出...
第8章 使用子查询解决问题 8.1 定义子查询 8.2 描述子查询能够解决的问题的类型 8.2.1 将子查询的结果集用于比较 8.2.2 星型转换(StarTransformation) 8.2.3 生成执行SELECT语句的表 8.2.4 生成投影值 ...
第8章“对象数据库系统”介绍了面向对象模型在数据库中的应用。对象数据库允许直接存储复杂的数据结构,如类、对象和继承关系,为处理复杂的现实世界问题提供了强大支持。本章会讲解对象-关系映射、对象查询语言以及...
第8章 使用子查询 第9章 多表查询 第10章 高级查询 第11章 插入数据 第12章 更新和删除数据 第13章 创建、操纵数据库和表 第14章 使用视图 第15章 使用存储过程和函数 第...
第8章 使用子查询 第9章 多表查询 第10章 高级查询 第11章 插入数据 第12章 更新和删除数据 第13章 创建、操纵数据库和表 第14章 使用视图 第15章 使用存储过程和函数 第...
第8章 使用子查询 第9章 多表查询 第10章 高级查询 第11章 插入数据 第12章 更新和删除数据 第13章 创建、操纵数据库和表 第14章 使用视图 第15章 使用存储过程和函数 第...
第8章 使用子查询 第9章 多表查询 第10章 高级查询 第11章 插入数据 第12章 更新和删除数据 第13章 创建、操纵数据库和表 第14章 使用视图 第15章 使用存储过程和函数 第...
在实际工作中,子查询通常用于解决多表查询的性能问题,特别是解决因笛卡尔积导致的性能降低。 8. **优化子查询**: 在多表查询中,子查询有时能提供更好的性能。通过预先计算子查询结果并存储在一个临时表或视图...
在SQL数据库第五章的作业中,你可能会被要求运用上述概念来解决问题,如创建查询、设计合理的数据库结构、优化查询性能等。理解并熟练掌握这些知识点将有助于你在数据库管理领域取得成功。通过实际操作和练习,你...
"数据库原理实验七草稿.doc"和"八草稿"则可能覆盖第7和第8章的内容,涉及数据库设计和事务处理的实践操作。 这些文档不仅对理解数据库原理有极大的帮助,而且提供了实际操作的机会,使得理论知识能够转化为实际技能...
5. 优化查询:使用子查询和 inner join 关联查询来解决深分页问题。 解决方案: 6. 使用子查询:用子查询查出符合条件的主键,再用主键 ID 做条件查出所有字段,执行时间缩短到 0.05 秒,减少了 0.12 秒,相当于...
第八个查询语句是检索选修课程号为C601和C603的学生学号。这个查询语句使用了相关子查询,首先检索出选修课程号为C601和C603的学生,然后返回学生学号。 第九个查询语句是检索选修全部课程的学生姓名。这个查询语句...
学习者可能会接触到子查询、联接(JOIN)、聚合函数(如COUNT、SUM、AVG、MAX、MIN)以及分组(GROUP BY)和排序(ORDER BY)等高级查询技巧。 2. **INSERT语句**:用于向数据库表中插入新的记录。掌握正确的字段名...
习题可能涵盖编写SQL查询语句,如SELECT、FROM、WHERE子句的组合,以及更复杂的子查询、联接操作和集合操作。此外,也可能考察视图、索引、存储过程和触发器的创建与使用。 第五章:数据完整性与安全性 数据完整性...
在完成第四章的作业时,学生可能需要结合这些概念,编写实际的SQL语句来解决问题。这将涉及理解表结构、设计有效的查询、掌握不同类型的连接,并熟悉如何正确使用数据操作语句。通过实践,可以加深对SQL的理解,为更...
它可以用来解决复杂的查询问题。例如,找出所有选修了某门课程的学生姓名: `SELECT Sname FROM Student WHERE SId IN (SELECT SId FROM SC WHERE CId = '某门课程的编号');` 3. 连接查询: 连接查询(Join)是...
《arcObjects GIS 应用开发(C#.NET)第八章配套程序》主要涵盖了使用C#.NET进行GIS应用开发的相关技术,特别是在使用ESRI的arcObjects库时的一些关键概念、方法和最佳实践。arcObjects是ESRI提供的一个强大的SDK,...
1. 数据结构与算法:作为程序设计的基础,数据结构用于高效存储和组织数据,而算法则是解决问题的具体步骤。在旅游资源管理中,可能会用到如链表、树、图等数据结构,以及搜索、排序、图遍历等算法,以便快速查询和...
在"C#开发实战宝典第8章"中,我们聚焦于C#编程语言的实际应用,这一章的内容无疑是为了提升开发者解决实际问题的能力。C#,由微软公司开发,是一种广泛应用于构建Windows桌面应用、Web应用以及游戏开发的强大编程...