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

【第9周】除法及集合并交差关系代数及SQL表达应用举例及主要概念.doc

【第9周】除法及集合并交差关系代数及SQL表达应用举例及主要概念.doc

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

 PAGE \* MERGEFORMAT 7 第9周【201201106/08】除法及集合并交差的SQL表达 第一部分 关系代数除法的SQL表达举例【例12-14】 【例12】【教材P111例46】查询选修了全部课程的学生姓名 所表达的语义:查询这样的学生,不存在 没有选的课程(即选了所有课程) *问题:给出其关系代数表达式 *SQL表达式 准备: ***执行【4讲】删除并建立数据库jsj建表插入元组 ***【教材P109例44以及P110例45】带存在(EXISTS)谓词的子查询举例 【P109例44】查询所有选修了1号课程的学生姓名 思路:循环依次指定一学生,循环体判断此学生是否选修了一号课程(选是) use jsj Select sno,sname from s where exists(select * from sc where sc.sno=s.sno and sc.cno=1) 【P110例45】查询没有选修1号课程的学生姓名 思路:循环依次指定一学生,内循体环判断此学生是否选修了一号课程(选非) use jsj Select sno,sname from s where Not exists(select * from sc where sc.sno=s.sno and sc.cno=1) 问题:查询没有选修课程学生的学号姓名 use jsj Select sno,sname from s where Not exists(select * from sc where sc.sno=s.sno ) 【例12求解】查询不存在没有选修课程(即选修了所有课程)学生的学号姓名 use jsj select sno,sname from s --可以理解为外循环依次选定S表中的一条记录 where not exists --不存在没有选修课程 ( select * from c --可以理解为内循环,依次选定C表中的一条记录 where not exists -- 外循环的学生没有选修一门课程 ( select * from sc where sno=s.sno and cno= c.cno ) ) ***执行下述两语句使得表内容如下图(为了更直观说明问题): use jsj delete from c where cno=4 update sc set sno=97002 where cno=1 and sno=97001 【例13】【教材P111例47】查询至少选修了学生97001选修的全部课程的学生号码 所表达的语义:对于每个学生sno来说 ,不存在这样的课程y,97001号同学选修了y 而学生sno没有选 use jsj select sno from sc scx --可以理解为外循环依次选定S表中的一条记录Rsno where not exists -- 对于每一个选定的学生,不存在这样的课程y() ( select * from sc scy --可以理解为内循环,依次选定scy表中的一条记录 where scy.sno=97001 -- 97001同学选修的课程, and not exists -- 学生Rsno没有选 ( select * from sc scz where scz.sno=scx.sno and scz.cno=scy.cno ) ) use jsj select sno from s --可以理解为外循环依次选定S表中的一条记录,假设为Rsno where not exists -- 对于每一个选定的学生,不存在这样的课程y() ( select * from sc scy --可以理解为内循环,依次选定scy表中的一条记录 where scy.sno=97001 -- 97001同学选修了, and not exists -- 学生Rsno没有选 ( select * from sc scz where scz.sno=s.sno and scz.cno=scy.cno ) ) 【例14】【教材作业P75第5题(5)】求至少使用了供应商s1所供应的全部零件的工程号JNO 所表达的语义:不存在这样的零件号y,供应商S1供应的零件号y,工程X没有使用 create table s75 ( sno char(10) primary key, sname char(20) not null, status int, city c

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档