经典的学生选课sql语句.docVIP

  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问题“查询选修全部课程的学生姓名 ”。最后问什么还要廉洁SC表和S表? 100分 标签:选修sc 课程学生where 回答:2 ? 浏览:1308 ? 提问时间:2010-10-04 23:45 请教各位大侠: 问题是:最后一句话 select * from SC where Snum=S.Snum and Cnum=C.Cnum 中为什么还要连接SC表和S表? 在SQL中试了试,不要Snum=S.Snum 结果是一样的。 而且从连接操作的角度看也是没必要连接的。因为SC表里面已经有Snum了。连接完无非是生成了一个把SC和S连接起来的新表:这个新的表行数和SC表一样。 只是在SC的每一行都加上了了S里的属性:Sname,Ssex,Sage,Dnum。 所以不明白为什么需要连接S表。 有学生选课关系 S(Snum,Sname,Ssex,Sage,Dnum) Snum Sname Sex Age SD S001 王明 男 19 D2 S002 李勇 男 23 D3 S003 刘燕 女 21 D1 S004 王萍 女 23 D1 S005 王佳 男 24 D3 S006 赵婷 女 20 D1 SC(Snum,Cnum,Score) Snum Cnum Score S001 C1 83 S001 C2 89 S001 C3 65 S001 C4 85 S001 C5 85 S002 C3 69 S002 C4 75 S003 C1 95 S004 C1 85 S005 C2 92 S005 C3 76 C(Cnum,Cname,Cfreq) Cnum Cname Cfreq C1 数据库系统原理 4 C2 C程序设计 4 C3 计算机体系结构 3 C4 自动控制原理 2 C5 数据结构 4 比如查询选修全部课程的学生姓名 select Sname from S where not exists (select * from C where not exists (select * from SC where Snum=S.Snum and Cnum=C.Cnum)) 结果是王明 共0条评论... 推荐资料: 安意如《人生若只如初见》.txt 更多安意如相关资料 最佳答案 此答案由提问者自己选择,并不代表爱问知识人的观点 揪错评论举报 Kevin [大师] 我大致看了一下,是嵌套查询吧! 你应该这样理解: select * from SC where Snum=S.Snum and Cnum=C.Cnum 这句语句的意思是:从SC表中选择学生号与S表中的学生号相同,且课程号与C表中的课程号相同。即学生号与课程号都必须存在于它们自己的表中(S表和C表)!不这样写,可能会把不存在的学生号或者课程号返回出来,造成结果错误。虽然,可能与结果无异,但这样写是完整性约束的表述,相当有必要。 如果之前做过表间关联(S表的Snum,C表的Cnum,SC表的Snum和Cnum),那么这一步的数据一致性校验可以不做(表关联可以使不符合的数据无法输入到表中,从而在查询时也不会出现数据不一致的问题)。 你再理解一下,有不明白的地方,欢迎讨论。

文档评论(0)

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

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

1亿VIP精品文档

相关文档