教学数据库关系代数sql实例课件.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实例课件

教学数据库系统应用实例 例2.7 设有教学数据库系统的四个关系: 教师关系T(T#,TNAME,TITLE) 学生关系S(S#,SNAME,AGE,SEX) 选课关系SC(S#,C#,GRADE) 课程关系C(C#,CNAME,T#) 应用实例(2) (2)检索学习课程号为C2的学生学号与姓名 分析:所求的S#与SNAME在S中,选择条件中C#在SC和C中,因此必须把S和SC或C连接,但C与S没有公共属性。 解: Πs#,SNAME(σ c#=‘c2’ (S SC)) 应用实例(3) (3)检索至少选修LIU老师所授课程中一门课程的学生学号与姓名。 分析:所求的S#与SNAME在S中,选择条件中LIU在T中,但S和T没有公共属性,因此必须借助SC和C。 (S SC) C= S (SC C)= S SC C 解: Πs#,SNAME(σTNAME=‘LIU’ (S SC C T)) 应用实例(4) (4)检索选修课程号为C2或C4的学生学号。 分析:所求的S#与选择条件中C#都在SC中,选择条件用逻辑或表示,所求的仅有学号。 解: Πs#(σ C#=‘c2’ ∨ C#=‘c4’ (SC)) SELECT S# FROM SC WHERE C#=‘C2’ OR C#=‘C4’ 应用实例(5) (5)检索至少选修课程号为C2和C4的学生学号。 分析:所求S#和选择条件中的C#均在SC中,因此对SC操作,但SC中元组仅有一个C#值,要包括C2和C4必须有一个元组中有两个C#值,考虑SC × SC中同一学生的元组。 解: Π1(σ1=4 ∧2=‘C2’ ∧5=‘C4’(SC × SC)) 错误解: Π1(σ2=‘C2’ ∧2=‘C4’(SC)) 应用实例(6) (6)检索不学C2课的学生姓名与年龄。 分析:所有的学生中去除选学C2课的学生。 解: ΠSNAME,AGE(S)- Π SNAME,AGE(σ c#=‘c2’(S SC)) 注:检索条件中有否定词的用差运算。 错误解: Π SNAME,AGE(σ c#≠ ‘c2’(S SC)) 应用实例(7) (7)检索学习全部课程的学生姓名。 分析:全部课程为: ΠC#(C) 学习了全部课程的学生为ΠS#,C#(SC) ÷ ΠC#(C) 但SC中没有SNAME,因此要与S连接。 解: ΠSNAME(S (ΠS#,C#(SC) ÷ ΠC#(C) )) 注:检索条件中有全部、所有等全称量词的用除运算。 应用实例(8) (8)检索所学课程包含S3所学课程的学生的学号。 分析:S3所学的课程可用ΠC#(σ S#=‘S3’(SC))。 解: ΠS#,C#(SC) ÷ ΠC#(σ S#=‘S3’(SC)) * * 应用实例(1) (1)检索学习课程号为C2的学生学号与成绩 分析:所求的S#与GRADE属性均在SC关系中;约束条件为C#是C2,C#在SC中,因此对SC关系操作。 解: Πs#,GRADE(σ c#=‘c2’(sc)) 注:约束条件成为选择运算的选择条件。 SELECT S#,SCORE FROM SC 第一种写法(连接查询): SELECT S.S#,SNAME FROM S,SC WHERE S.S#=SC.S# AND C#=‘C2’ 第二种写法(嵌套查询): SELECT S#,SNAME FROM S WHERE S# IN(SELECT S# FROM SC WHERE C#=‘C2’) 这里嵌套的子查询在外层查询处理之前执行。 或使用内外相关子查询 SELECT S#,SNAME FROM S WHERE ‘C2’ IN(SELECT C# FROM SC WHERE S#=S.S#) 子查询的查询条件依赖于外层查询中的某个值,所以查询的处理不止一次,要反复求值,以供外层查询使用。 第三种写法(使用存在量词的嵌套查询) SELECT S#,SNAME FROM S WHERE EXISTS (SELECT * FROM SC WHERE SC.S#=S.S# AND C#=‘C2’) 谓词EXISTS表示存在,其语义是内层查询的结果应该非空(即至少存在一个元组)。 SELECT S.S#,SNAME FROM S,SC,C,T WHERE S.S#=S

文档评论(0)

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

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

1亿VIP精品文档

相关文档