补充资料-数据应用与性能优化-第二章-联接查询案例几则-V1.0.docVIP

补充资料-数据应用与性能优化-第二章-联接查询案例几则-V1.0.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
补充资料-数据应用与性能优化-第二章-联接查询案例几则-V1.0

联接查询案例几则 数据库的多表联接查询是一个十分重要的内容,在工作当中也是经常用到的。因为操作的复杂性和联接类型的多样性,导致在实际工作中经常会遇到问题后不知道从何处下手,为了锻炼提高这方面的能力,特意设计了两个案例作为练习之用。通过反复的练习一定可以掌握多表联接查询中的技巧。 案例描述1:Benet公司是一家综合业务集团公司,产品涉及多个方面。其中主营业务之一是网上商城。网上商城采用SQL Server 2005数据库系统作为后台。其中Benet数据库专门用来存储和网上商城有关的信息,其中有两张表benet_products和benet_productbook分别存储产品名称信息和对应产品的留言信息。表结构如下图2.1和图2.2 图2.1 benet_products表结构 图2.2 benet_productbook表结构 在网站运营一段时间后,表中已经存储了一些相关的信息,这时候管理分别对两张表执行了Select查询,分别得到如下的结果,对于benet_products表执行Select查询后的结果如图2.3,对于benet_productbook执行Select查询后的结果如图2.4: 图2.3 benet_products表包含的信息 图2.4 benet_productbook表包含的信息 问题1:benet公司现在希望管理员能够查询对于产品的评价,如果没有评价的产品就不要在表中体现出来,即只有客户留下评价的产品列举出来。该如何实现? 实现方法:在SQL Server 2005系统管理器中新建查询,并输入如下代码: select s.id,s.pro_name,b.pro_id,b.content from benet_products as s inner join benet_productbook as b on b.pro_id=s.id 查询的结果如图2.5所示: 图2.5 对多表进行内联接查询的结果 从查询的结果可以看出。数据库已经根据用户的需要,将所有有评价的产品列举了出来。而其他从来没有过评价的产品都没有显示出来。那么如果输入如下代码会产生什么结果呢? select s.pro_name,s.id,b.pro_id,b.content from benet_products as s inner join benet_productbook as b on s.id=b.id 查询的结果如图2.6所示: 图2.6 多表内联接查询的结果 从查询结果可以看出,虽然使用的语法结构没有问题,但是查询的结果确和上面的查询结果不一致,产生这种情况的原因是因为在将两表联接在一起时选择错了关键字。而如果一旦选择了错误相连的关键字,那么产生的查询结果将和用户的需求是截然不同的。 问题2:Benet公司经过经验总结,认为没有评价的产品不是热点产品,所以希望减少进货量,现在公司希望查询出所有没有评价的产品,该如何实现? 实现方法:在SQL Server 2005系统管理器中新建查询,并输入如下代码: select s.pro_name,s.id,b.pro_id,b.content from benet_products as s left outer join benet_productbook as b on s.id=b.pro_id 查询的结果如图2.7所示: 图2.7 多表外联接查询的结果 从查询结果中可以很清楚的看出产品手表、新款服装、冰镇饮料都没有任何评价,由此可以得知该三类产品并不是热点产品。这种查询是通过左外联接的方式来实现的。 案例描述2:Benet公司创建了一个投票选举系统,在benet数据库中创建了两张表system和information用来分别存储投票的具体情况和投票者的信息表。表的内容如图2.8和2.9: 图2.8 system表中的所有信息 图2.9 information表中的所有信息 问题1:benet公司现在希望管理员能够查出哪些题目被投票了,投票的用户都来自于哪些IP地址,应该如何去做? 实现方法:在SQL Server 2005系统管理器中新建查询,并输入如下代码: select m.id,m.title,i.ip from system as m right join information as i on m.id=i.id 查询的结果如图2.10所示: 图2.10 右外联接查询的结果 从查询语句中分析,因为这里主要希望得到右侧表的数据信息,所以一定要使用右外连接。如果使用左外连接。那么一些没有投票的项目内容也会体现出来。如图2.11。这样显然是没有必要的。 图2.11 左外联接

文档评论(0)

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

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

1亿VIP精品文档

相关文档