8-子查询-嵌套查询概念.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库开发技术 第8章 子查询:嵌套查询 本章要点 掌握使用子查询或嵌套查询进行数据检索; 掌握子查询中用到的各种运算符,例如ANY,SOME和ALL; 与其他DML和DDL语言一同使用子查询; 使用多表INSERT语句,例如INSERT ALL和INSERT FIRST; 介绍一种新的MERGE语句; 掌握带EXISTS和NOT EXISTS运算符的相关查询的使用方法; 用子查询来解决一个问题 “谁的薪水比 Jones还高呢?” 子查询简单语法 子查询(内部查询)先于主查询执行。 子查询的结果被主查询(外部查询)使用 子查询可以嵌于以下SQL子句中: WHERE 子句 HAVING 子句 FROM 子句 子查询还可以用于CREATE VIEW, CREATE TABLE语句以及UPDATE子句, INSERT语句的 INTO子句、 UPDATE语句的SET子句中。 使用子查询 子查询的类型 单行子查询 子查询使用指导 子查询要用扩号扩起来 将子查询放在比较运算符的右边 不要在子查询中使用 ORDER BY 子句 对于单行子查询要使用单行运算符 对于多行子查询要使用多行运算符 单行子查询 子查询只返回一行 使用单行运算符 执行单行子查询 多行子查询 返回多于一行记录 使用多行比较运算符 P157 多行子查询中使用ANY运算符 多行子查询中使用ALL运算符 子查询中使用组函数 HAVING子句中的子查询 Oracle服务器先执行子查询 Oracle服务器将子查询结果返回给主查询的 HAVING 子句 这个语句错在哪 这条语句会工作吗? 多列子查询 成对比较多列子查询 从emp表中查找出和30部门中任意一个雇员的薪水和职务完全相同的外部门员工,并显示其姓名、部门编号、薪水和职务。 成对比较多列子查询 从emp表中查找出和30部门中任意一个雇员的薪水和佣金完全相同的雇员,并显示其姓名、部门编号、薪水和佣金,但是该雇员不是来自30部门。 不成对比较多列子查询 显示与30部门任何雇员薪水及佣金相匹配的雇员的姓名、部门编号、薪水及佣金。 多列比较 子查询中的空值 子查询返回空值 子查询使用复习 子查询要用扩号扩起来 将子查询放在比较运算符的右边 如非必要,不要在子查询中使用 ORDER BY 子句 对于单行子查询要使用单行运算符 对于多行子查询要使用多行运算符 在 FROM 子句中使用子查询 在 FROM 子句中使用子查询 相关的子查询 相关的子查询 相关的子查询 查询工资是本部门最高工资的员工信息 相关的子查询 查询在纽约工作的员工信息 相关的子查询 查询在纽约工作的员工信息 带有EXISTS谓词的子查询 1. EXISTS谓词 存在量词? 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果非空,则外层的WHERE子句返回真值 若内层查询结果为空,则外层的WHERE子句返回假值 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义 2. NOT EXISTS谓词 若内层查询结果非空,则外层的WHERE子句返回假值 若内层查询结果为空,则外层的WHERE子句返回真值 带有EXISTS谓词的子查询 查询所有选修了1号课程的学生姓名。 思路分析: 本查询涉及Student和SC关系 在Student中依次取每个元组的Sno值,用此值去检查SC关系 若SC中存在这样的元组,其Sno值等于此Student.Sno值,并且其Cno= 1,则取此Student.Sname送入结果关系 带有EXISTS谓词的子查询 用嵌套查询 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno= 1 ); 用子查询创建表 在 CREATE TABLE 语句的AS子句中使用子查询可以在创建表的同时插入数据 所指定列的数量和类型必须和子查询中列的数量和类型相匹配 使用子查询创建表 使用子查询插入数据 使用INSERT语句向表中插入来自另一个表中的数据,方法是在原来 VALUES子句的位置使用子查询 使用子查询插入数据 在 INSERT语句中使用子查询 不使用 VALUES 子句 INSERT子句中列的数量和类型必须和子查询中列的数量和类型相匹配 使用子查询插入数据 在 INSERT语句中使用子查询 不使用 VAL

文档评论(0)

w3388825 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档