网站大量收购闲置独家精品文档,联系QQ:2885784924

(第六讲)第7章数据库查询分解.ppt

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例7-54】在“教学库”中将12级网络专业张丽娜选修的“C002”号课删除。 方法一:使用SELECT子句 DELETE 选课表 WHERE 课程号=C002 AND 学号= (SELECT 学号 FROM 学生表 WHERE 姓名=张丽娜 AND 年级=12级 AND 专业=网络) 方法二:使用JOIN内连接 DELETE 选课表 FROM 选课表 JOIN 学生表 ON 学生表.学号=选课表.学号 WHERE 课程号=C002 AND 姓名=张丽娜 AND 年级=12级 AND 专业=网络 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * 例7-35可以用自连接来实现,程序如下: USE 教学库 SELECT a.学号, a.姓名, a.专业 FROM 学生表 a, 学生表 b WHERE a. 专业=b. 专业 AND b. 姓名=刘玲玲 需要特别指出的是,子查询的SELECT语句不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序。 【例7-36】在“教学库”中查询“C007”号课的考试成绩比“郑辉”高的学生的学号和姓名。 USE 教学库 SELECT 学生表.学号,姓名 FROM 学生表,选课表 WHERE 学生表.学号 = 选课表.学号 and 课程号=C007 and 成绩(SELECT 成绩 FROM 选课表 WHERE 课程号=C007 and 学号=(SELECT 学号 FROM 学生表 WHERE 姓名=郑辉)) 2. SOME、ANY、ALL和IN子查询 ALL和ANY操作符的常见用法是结合一个比较操作符对一个数据列子查询的结果进行测试。 它们测试比较值是否与子查询所返回的全部或一部分值匹配。比如说,如果比较值小于或等于子查询所返回的每一个值,= ALL将是true;只要比较值小于或等于子查询所返回的任何一个值,= ANY将是true。SOME是ANY的一个同义词。 【例7-37】查询“教学库”中网络专业年龄最大的学生的学号和姓名。 USE 教学库 SELECT 学号,姓名 FROM 学生表 WHERE 年龄= ALL (SELECT 年龄 FROM 学生表 WHERE 专业=网络) AND 专业=网络 【例7-38】查询“教学库”中与任何网络专业同龄的学生的信息。 USE 教学库 SELECT * FROM 学生表 WHERE 年龄= ANY (SELECT 年龄 FROM 学生表 WHERE 专业=网络) SELECT * FROM 学生表 WHERE 年龄 in (SELECT 年龄 FROM 学生表 WHERE 专业=网络) 实际上,IN和NOT IN操作符是= ANY和 ALL的简写。也就是说,IN操作符的含义是“等于子查询所返回的某个数据行”,NOT IN操作符的含义是“不等于子查询所返回的任何数据行”。 【例7-39】在“教学库”中查询选修了“C001”号课程的学生姓名和所在专业。 USE 教学库 SELECT 姓名,专业 FROM 学生表 WHERE 学号 IN (SELECT 学号 FROM 选课表 WHERE 课程号=C001) 7.4.2 相关子查询 在相关子查询中,子查询的执行依赖于外部查询,多数情况下是子查询的WHERE子句中引用了外部查询的表。 相关子查询的执行过程与嵌套子查询完全不同,嵌套子查询中子查询只执行一次,而相关子查询中的子查询需要重复地执行。 相关子查询的执行过程: ①子查询为外部查询的每一行执行一次,外部查询将子查询引用的列的值传给子查询。 ②如果子查询的任何行与其匹配,外部查询就返回结果行。 ③再回到第一步,直到处理完外部表的每一行。 1. 比较子查询 【例7-40】在“教学库”中查询成绩比该课的平均成绩低的学生的学号、课程号、成绩。 USE 教学库 SELECT 学号,课程号,成绩 FROM 选课表 a WHERE 成绩 ( SELECT avg(成绩) FROM 选课表 b WHERE a.课程号=b.课程号) 2. 带有EXISTS的子查询(存在性测试) 使用子查询进行存在性测试时,通过逻辑运算符EXISTS或NOT EXISTS,检查子查询所返回的结果集是否有行存在。使用逻辑运算符EXISTS时,如果在子查询的结果集内包含有一行或多行,则存在性测试

文档评论(0)

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

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

1亿VIP精品文档

相关文档