- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程回顾 T-SQL变量有局部变量和全局变量两种: 局部变量由用户定义,以@为前缀。 全局变量由系统提供,以@@为前缀。用户只能获取全局变量的值,不能自己定义,使用IF ELSE语句可以根据条件决定执行的T-SQL语句。 使用WHILE语句可以循环执行T-SQL语句。 使用CASE WHEN THEN END多路分支能够依据多种条件选择执行的T-SQL语句。 在T-SQL编程中,逻辑运算符ALL、ANY与关系运算符一起可以实现特定值与结果集进行比较。 在T-SQL编程中,逻辑运算符EXISTS可以进行结果集的存在检查,经常与IF一起使用,进行存在测试。 本章内容 简单子查询的用法 子查询与IN、ANY、ALL 子查询与EXISTS 相关子查询 子查询和多表联接查询 本章目标 能够掌握简单子查询的使用 能够与子查询一起使用IN和NOT IN 能够与子查询一起使用EXISTS和NOT EXISTS 能够与子查询一起使用ALL、ANY 能够理解相关子查询的查询原理 综合运用子查询实现HR数据库的部门工资管理 1.简单子查询 基本子查询分为三类 通过 IN 、ANY 、ALL 修改的比较运算符引入的列表上操作的子查询 通过未修改的比较运算符引入且必须返回单个值的子查询 通过 EXISTS 引入的存在测试的子查询 子查询概述 子查询的简单使用 子查询概述 方法一:使用T-SQL中的变量 子查询概述 方法二:使用子查询 1.2 如何编写子查询 编写复杂的子查询(尤其是多层嵌套的子查询),最简单的方法是分解查询。从最内层的子查询开始分解,将嵌套的SQL语句拆分为独立的SQL语句分别执行;当确认结果无误后,再重新组合在一个语句中 如何编写子查询 第一步: 如何编写子查询 第二步 如何编写子查询 第三步 如何编写子查询 第四步 1.3 UPDATE、DELETE、INSERT中使用子查询 UPDATE语句中使用子查询 UPDATE、DELETE、INSERT中使用子查询 DELETE语句中使用子查询 UPDATE、DELETE、INSERT中使用子查询 INSERT语句中使用子查询 小结1 2.高级子查询 2.1 使用IN、NOT IN的子查询 使用IN、NOT IN的子查询 使用NOT IN 2.2 使用EXISTS、NOT EXISTS的子查询 EXISTS对子查询的查询结果进行存在测试。只要子查询的结果有一行或一行以上的数据,就返回真,否则返回假。结果只取决于是否会返回行。 使用EXISTS、NOT EXISTS的子查询 NOT EXISTS对子查询的查询结果进行不存在测试,如果一行数据也不存在,整个 NOT EXISTS (子查询) 返回真 2.3 使用ALL的子查询 通过比较运算符将一个表达式的值或列值与子查询返回的一列值中的每一行进行比较,只要有一次比较的结果为FALSE,则ALL测试返回FALSE 2.4 使用ANY/SOME的子查询 按照比较运算符、表达式或字段对子查询的结果每一行进行一次计算和比较。只要有一次满足条件,那么 ANY 的结果就是真;当子查询每行结果与ANY前面的表达式或字段比较结果全为假时,则结果为假 2.5 使用别名的相关子查询 相关子查询的工作方式是:在子查询中找到外部查询的参考时执行外部查询,此时将结果返回给子查询。然后在外部查询返回的结果集上执行子查询操作。 小结2 3. 子查询综合应用 子查询综合应用 分析 Salary表保存有员工工资的历史记录,意味着有员工工资出现多条数据的情况,必须先查询出每个员工有效的工资。有效的工资确定为离当前日期最近的一条数据。解决这个问题可以使用IN子查询和相关子查询 员工的工资已查询,但在工资表中只有员工工资信息没有部门编号信息,所以必须将过滤后的数据作为一个子查询(虚表)与员工工资表和部门表进行相关子查询 子查询综合应用 第一种方案:相关子查询 子查询综合应用 第一种方案:相关子查询 子查询综合应用 第一种方案:相关子查询 子查询综合应用 第一种方案:相关子查询 子查询综合应用 第二种方案:联接查询 子查询综合应用 第二种方案:联接查询 子查询综合应用 第二种方案:联接查询 子查询综合应用 第二种方案:联接查询 小结3 本章总结 子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询 基本子查询有三类: 通过 IN 、ANY 、ALL 修改的比较运算符引入的列表上操作的子查询 通过未修改的比较运算符引入且必须返回单个值的子查询 通过 EXISTS 引入的存在测试的子查询 通过在子查询中使用IN子句,子查询可以返回多行记录,
文档评论(0)