第6.2章嵌套功能查询.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
子查询 子查询规则 子查询的限制条件 无修改的比较运算符引入的子查询不能包括GROUP BY和HAVING子句。 包括GROUP BY的子查询不能使用DISTINCT关键字。 不能指定COMPUTE和INTO子句 只有同时指定了TOP,才可以指定ORDER BY。 子查询 子查询规则 子查询的条件的限制 由子查询创建的视图不能更新。 9. 通过EXISTS引入的子查询的选择列表由星号(*)组成,而不使用单个列名 10. 当=、!=、、=、、或=用在主查询中,ORDER BY子句和GROUP BY子句不能用在内层查询中,因为内层查询返回的一个以上的值不可被外层查询处理 子查询 T-SQL允许SELECT多层嵌套使用,即一个子查询中还可以嵌套子子查询,用来表示复杂的查询,从而增强SQL的查询能力。 以这种层层嵌套的方式来构造查询语句正是SQL中“结构化”的含义所在。 嵌套查询概述 一个SELECT-FROM-WHERE语句称为一个查询块 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询 子查询通常与IN 、比较运算符及EXISTS谓词结合使用。 子查询的返回结果是一个值的嵌套查询称为单值嵌套查询。 将第一步查询嵌入第二步查询中,作为构造第二部查询的条件。 * 子查询的返回结果是一列值的嵌套查询称为多值嵌套查询。 1. EXISTS谓词 存在量词? 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果非空,则外层的WHERE子句返回真值 若内层查询结果为空,则外层的WHERE子句返回假值 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义 2. NOT EXISTS谓词 若内层查询结果非空,则外层的WHERE子句返回假值 若内层查询结果为空,则外层的WHERE子句返回真值 * select information.s_no,dbo.information.s_name from information where information.s_no in( select s_no from dbo.score group by s_no having count(s_no)= (select count(c_no) from dbo.course)) 不同形式的查询间的替换 一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换 所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换 这类查询称为相关子查询,其特点是子查询的查询条件依赖于外层父查询的某个属性值。 Copyright by spring 第六章 数据查询 * 本章内容 6.1 基本查询 6.2 嵌套查询 6.3 连接查询 数据查询 第2讲 嵌套查询 子查询 基本子查询语句 子查询类型 记录操作语句中的子查询 子查询规则 学习要点 子查询 基本子查询语句 子查询 Select…… From…… Where…… 查询块 Select…… From…… Where(having) 子查询 SQL Server允许多层嵌套查询。嵌套查询一般的查询方法是由里向外进行处理,即每个子查询在上一级查询处理之前处理,子查询的结果用于建立其父查询的查找条件。子查询中所存取的表可以是父查询没有存取的表,子查询选出的记录不显示。 单值嵌套查询 多值嵌套查询 子查询 子查询类型 使用IN或NOT IN的子查询 使用比较运算符的子查询 使用ANY或ALL的子查询 使用EXISTS的子查询 子查询 子查询类型 使用IN或NOT IN的子查询 指父查询与子查询之间用IN进行联接,判断某个属性列值是否在子查询的结果中 属于多值嵌套查询 【例6-25】 改进后的【例6-25】 【例6-26】 子查询类型 子查询类型 【例6-25】 查询与“刘晶晶”在同一个班学习的学生 Step1: 确定“刘晶晶”所在班级名 Step2: 查找所有在‘信息021’班学习的学生 In or not in SELECT S_class FROM Information WHERE S_name=刘晶晶 SELECT S_no, S_name, S_class FROM Information WHERE S_class=信息021 子查询类型 改进后的【例6-25】 In or not in SELECT S_class FROM Information WHERE

文档评论(0)

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

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

1亿VIP精品文档

相关文档