第6章-4 SELECT数据查询.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章-4 SELECT数据查询

数据库应用技术( SQL Server 2005) 第6章 SELECT数据查询(4) 复 习 导 入 子查询 一 子查询基础 子查询可以嵌套在外部SELECT、INSERT、UPDATE或DELETE的WHERE或HAVING子句内。 子查询分为多行子查询与单值子查询。 例如: SELECT XSDA.学号,姓名, (SELECT MIN(成绩) FROM XSCJ WHERE XSDA.学号= XSCJ.学号) AS 最低成绩 FROM XSDA 子查询 二 多行子查询 多行子查询是指执行查询语句获得的结果集中返回了多行(一组)数据信息的子查询,在子查询中可以使用IN关键字、EXISTS关键字和比较操作符(SOME 与 ANY)等来连接表数据信息。 子查询 二 多行子查询—IN子查询 IN子查询用于进行一个给定值是否在子查询结果集中的判断。 语法格式:表达式 [NOT] IN (子查询) 说明:当表达式与子查询的结果表中的某个值相等时,IN谓词返回TRUE,否则返回FALSE;若使用了NOT,则返回的值刚好相反。 子查询 二 多行子查询—IN子查询 【例】查询选修了202号课程的学生的情况。 USE XS SELECT * FROM XSDA WHERE 学号IN( SELECT 学号 FROM XSCJ WHERE 课程编号=202) GO 注意:当子查询产生一列值时,适合用带IN( NOT IN)的嵌套子查询。 子查询 二 多行子查询—IN子查询 【例】查询未选修数据结构课程的学生的情况。 USE XS SELECT * FROM XSDA WHERE 学号NOT IN ( SELECT 学号 FROM XSCJ WHERE 课程编号IN( SELECT 课程编号 FROM KCXX WHERE 课程名称=数据结构)) GO 子查询 二 多行子查询—IN子查询 【例】查询平均成绩大于90分的学生的学号和姓名。 USE XS SELECT 学号,姓名 FROM XSDA WHERE 学号IN ( SELECT 学号 FROM XSCJ GROUP BY 学号HAVING AVG(成绩)90) GO 子查询 二 多行子查询—比较子查询 比较子查询可以认为是IN子查询的扩展,它使表达式的值与子查询的结果进行比较运算。 语法格式: 表达式{|=|=||=|!=|||!|!}{ALL|SOME|ANY}(子查询) 说明: ALL,SOME和ANY说明对比较运算的限制。 ALL指定表达式要与子查询结果集中的每个值都进行比较,当表达式与每个值都满足比较的关系时,才返回TRUE,否则返回FALSE。 SOME或ANY表示表达式只要与子查询结果集中的某个值满足比较的关系时,就返回TRUE,否则返回FALSE。 子查询 二 多行子查询—比较子查询 【例】查询年龄最小的学生的学号、姓名及出生日期 分析与引导: (1)先求出所有同学出生日期。 (2)=ALL,大于等于所有出生日期(即大于等于最大日期,用子查询来实现)。 (3)找出满足条件的记录结果(学号、姓名、出生日期)。 USE XS SELECT 学号,姓名, 出生日期 FROM XSDA WHERE 出生日期=ALL( SELECT 出生日期 FROM XSDA) GO 子查询 二 多行子查询—比较子查询 【例】查询成绩高于王红最低成绩的学生姓名、课程名称及成绩。 分析与引导: (1)先求出王红的所有成绩。 (2)ANY,至少大于王红的一门课程成绩(即高于最低成绩,用子查询来实现)。 (3)找出满足条件的记录结果(姓名、课程名、成绩,用联接查询实现)。 USE XS SELECT XSDA.学号,姓名,课程名称,成绩 FROM XSDA JOIN XSCJ ON XSDA.学号=XSCJ.学号 JOIN KCXX ON XSCJ.课程编号=KCXX.课程编号 WHERE 成绩ANY( SELECT 成绩 FROM XSDA,XSCJ WHERE XSDA.学号=XSCJ.学号AND 姓名=王红) GO 子查询 二 多行子查询—EXISTS子查询 EXISTS表示存在量词,

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档