- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
orcale子查询
* 1、内容简介 在本章中,你将学习关于 SELECT 语句的更多的高级特性。你可以在另一个SQL 语句的 WHERE 子句中写子查询以获得基于未知条件值。本课包括单行子查询和多行子查询。 2、内容重点及难点 3、授课方法 PPT教学+上机练习+学员练习点评 * * 子查询是一个嵌套在一个SELECT语句中的另一个SELECT语句,您可以使用子查询构造功能强大的语句。子查询是非常有用的,特别是当您的需要从一个表中检索信息,但是检索条件的值又是来自该表本身的内部数据时。 子查询可以嵌于以下SQL子句中: WHERE 子句 HAVING 子句 FROM 子句 语法中: 运算符 包括比较运算符,如 , =, 或 IN 注:比较运算符 Comparison operators 分成两类: 单行运算符 (, =, =, , , =) 多行运算符 (IN, ANY, ALL). 子查询通常被称为嵌套SELECT语句、子SELECT语句或内部SELECT语句。子查询通常是首先执行,并且它的输出结果用于主查询的查询条件中。 课堂指导 另外,子查询还可以用于CREATE VIEW, CREATE TABLE语句以及UPDATE子句, INSERT语句的 INTO子句、 UPDATE语句的SET子句中。 * * * * 单行子查询是只返回一行结果的内部SELECT语句,主查询使用单行子查询返回的结果要采用单行运算符,上面的列表给出的就是单行运算符。 * 单行子查询:内部SELECT语句只返回一行结果的查询 多行子查询:内部SELECT语句返回多行结果的查询 多列子查询:内部SELECT语句返回多个列结果的查询 * 不但能在WHERE子句中使用子查询,而且可以在HAVING子句中使用。Oracle服务器先执行子查询,然后将子查询结果返回给主查询的HAVING子句。 * * * * * ANY运算符将和子查询返回的结果逐个比较。上面的例子显示了只要比任意一个文员工资低但又不是从事文员工作的雇员。文员的最高工资是 $1300,这个SQL语句显示的就是工资低于 $1300的非文员雇员。 ANY 表示比最大的小 ANY 比最小的大 =ANY 等效于 IN. 使用 ANY,经常会用到 DISTINCT 关键字来消除重复行的出现。 * * * * * * * * * * * * * * 1select employee_id,first_name||last_name,salary from employees where salary(select salary from employees where employee_id = 113)and job_id = (select job_id from employees where employee_id = 102) select employee_id,first_name||last_name,salary from employees e where exists (select salary from employees s where s.employee_id=113and e.salarys.salary)and exists (select salary from employees w where w.employee_id = 102and e.job_id = w.job_id) 2select first_name||last_name,salary from employees where salary in (select max(salary) from employees) select first_name||last_name,salary from employees e where not exists (select salary from employees w where w.salarye.salary) 3select d.department_id,d.department_name,min(salary) from employees e,departments d where e.department_id = d.department_idgroup by d.department_id,d.department_namehaving min(salary) (select min(salary) from employees where department_id = 100) select w.salary,d.department_id,d.department_namefrom emp
文档评论(0)