SQL多表查询操作.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL多表查询操作 Computer Control Institute, Guilin University of Electronic Technology 问 题 如果给你两张A4纸,其中一张上记录的是所有学生的基本信息,一张表记录的是选课信息,脱离SQL的环境,你会如何做来找出满足这样条件的记录:“查找选修了’ZB003’号课程的学生的姓名”。 一张表的查询操作给我们的启示 如果要查找学号为“09301”的学生的基本信息 SELECT * FROM Student WHERE Sno=‘09301’ 一张表的查询操作给我们的启示 既然我们能够熟练地对一张表进行操作,那么我们可以考虑是否应该将两张表先转换成一张表,再使用基于一张表的操作方法来进行查询? 思考问题:如果要将两张表连接成一张表,都有哪些方法?其中哪些方法是高效的? 方案一:基于笛卡尔积的全连接操作 全连接以后形成的部分效果 显然,上述全连接的结果中存在不合理的记录,应该被剔除,形成如下的查询结果: SELECT Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND Cno=‘ZB003’ 方案二:基于有效连接的(内、外)连接方案 内连接以后形成的部分效果 对有效连接的改进方案 显然,上述内连接得到的结果都是合理的记录,可直接施加业务查询条件,形成如下的查询结果: SELECT Sname FROM Student INNER JOIN SC ON Student.Sno=SC.Sno WHERE Cno=‘ZB003’ 总 结 基于一张表的查询启示所形成的两种查询策略: 全连接 + (有效记录)筛选 + (业务条件)筛选 有效连接 + (业务条件)筛选 新问题:还有其它的策略能帮助我们完成对多张表的查询操作吗?你对上述的两张A4纸还会有什么想法? 基于IN的结构化筛选策略 上述操作将一个已知条件通过初步查询转换为一个中间条件,再通过一个单表查询得到结果,其可表达为如下形成: SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=‘ZB003’ ) 新的思考?? 基于EXISTS的查询策略 与基于IN操作的从SC表作为出发点不同,这种策略的出发点是Student表,对Student表中的每一条记录作为参数传递到SC表,查看连接的可能性。其可表达为如下形成: SELECT Sname FROM Student WHERE EXISTS ( SELECT * FROM SC WHERE Student.Sno=SC.Sno AND Cno=‘ZB003’ ) 总结:多表查询操作基本策略 还会有其它的策略吗? Diagram Diagram Marketing Diagram * * LOGO 通信 19 女 郑灿灿 09102 计算机 20 男 周丹阳 09301 计算机 21 女 梅 岚 09302 通信 20 男 胡 爽 09101 Sdept Sage Ssex Sname Sno 80 ZB002 09102 90 ZB002 09101 70 BT001 09102 80 ZB003 09101 NULL BT004 09101 55 BT001 09101 85 ZB003 09102 82 ZB003 09301 Grade Cno Sno 3 ZB002 操作系统 BT004 4 NULL 离散数学 ZB003 4 ZB003 数据结构 ZB002 3 NULL 计算机网络 BT001 Ccredit Cpno Cname Cno 通信 19 女 郑灿灿 09102 计算机 20 男 周丹阳 09301 计算机 21 女 梅 岚 09302 通信 20 男 胡 爽 09101 Sdept Sage Ssex Sname Sno 通信 19 女 郑灿灿 09102 计算机 20 男 周丹阳 09301 计算机 21 女 梅 岚 09302 通信 20 男 胡 爽 09101 Sdept Sage Ssex Sname Sno 80 ZB002 09102 90 ZB002 09101 70 BT001 09102 80 ZB003 09101 NULL BT004 09101 55 BT001 09101 85 ZB003 09102 82 ZB003 09301 Grade Cno Sno Grade Cno SC.Sno Sdept Sage Ssex Sname Student.Sno 问题:连接以后的表中的数据

文档评论(0)

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

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

1亿VIP精品文档

相关文档