第8章4数据查询操作.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server 2005数据库应用技术(第二版) 第8章 数据查询操作(4) 复 习 导入 问题: 查询年龄比平均年龄小的学生的学号、姓名及年龄? 分析: (1)先求出平均年龄。 (2)把年龄平均年龄作为查询条件,查询学生的相关信息 如何求平均年龄?——需要一个查询(子查询) select 学号,姓名,DATEDIFF(YEAR,出生日期,GETDATE()) AS 年龄from xsda where DATEDIFF(YEAR,出生日期,GETDATE()) (SELECT AVG(DATEDIFF(YEAR,出生日期,GETDATE())) FROM XSDA) 导 入 8.8 子查询 8-8-1 子查询基础 子查询可以作为表达式的一部分而存在。 可以嵌套在外部SELECT、INSERT、UPDATE或DELETE的WHERE或HAVING子句内 也可以字段名列表中的一部分,或FROM子句的源。 例如:显示学生的学号、姓名及所选修课程中的最低成绩 分析:将选修课程中的最低成绩作为字段列表中的一个。 SELECT XSDA.学号,姓名, (SELECT MIN(成绩) FROM XSCJ WHERE XSDA.学号= XSCJ.学号) AS 最低成绩 FROM XSDA 8.8 子查询 8-8-1 子查询基础 例:查询与“200501”同学同系的学生的学号和姓名 分析:(1)先从XSDA表中求出学号为“200501”的系名 (2)再从XSDA表中求出系名=上述系名的学生的相关信息。 SELECT 学号,姓名 FROM XSDA WHERE 系名=( SELECT 系名 FROM XS WHERE 学号=’200501’) 子查询分为多行子查询与单值子查询。前者在通过 IN 或由 ANY 或 ALL 修改的比较运算符引入的列表上操作和通过 EXISTS 引入的存在测试;后者通过未修改的比较运算符引入返回单个值。 8.8 子查询 8-8-2 多行子查询 多行子查询是指执行查询语句获得的结果集中返回了多行(一组)数据信息的子查询,在子查询中可以使用IN关键字、EXISTS关键字和比较操作符(SOME 与 ANY)等来连接表数据信息。 8.8 子查询 8-8-2 多行子查询—IN子查询 IN子查询用于进行一个给定值是否在子查询结果集中的判断。 语法格式:表达式 [NOT] IN (子查询) 说明:当表达式与子查询的结果表中的某个值相等时,IN谓词返回TRUE,否则返回FALSE;若使用了NOT,则返回的值刚好相反。 8.8 子查询 8-8-2 多行子查询—IN子查询 【例1】查询选修了202号课程的学生的情况。 USE XS SELECT * FROM XSDA WHERE 学号IN( SELECT 学号 FROM XSCJ WHERE 课程编号=202) GO 注意:当子查询产生一列值时,适合用带IN( NOT IN)的嵌套子查询。 8.8 子查询 8-8-2 多行子查询—IN子查询 【例2】查询未选修数据结构课程的学生的情况。 分析:(1)先通过KCXX获得数据结构的课程编号 (2)从XSCJ表中获得选修该课程编号的学生学号 (3)从XSDA中获得不是上述学号的其它学号 SELECT * FROM XSDA WHERE 学号NOT IN ( SELECT 学号 FROM XSCJ WHERE 课程编号IN ( SELECT 课程编号 FROM KCXX WHERE 课程名称=数据结构)) GO 8.8 子查询 8-8-2 多行子查询—IN子查询 【例3】查询平均成绩大于90分的学生的学号和姓名。 分析: (1)从XSCJ中获得平均成绩大于90的学生学号 (2)从XSDA中查询学号在上述学号集合的学生学号与姓名 SELECT 学号,姓名 FROM XSDA WHERE 学号IN ( SELECT 学号 FROM XSCJ GROUP BY 学号 HAVING AVG(成绩)90) GO 8.8 子查询 8-8-2 多行子查询—比较子查询 比较子查询可以认为是IN子查询的扩展,它使表达式的值与子查询的结果进行比较运算。 语法格式: 表达式{|=|=||=|!=|||!|!}{ALL|SOME|ANY

文档评论(0)

rijindj + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档