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

第5章 Transact-SQL数据检索详细版.ppt

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

内联接 内联接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与联接条件相匹配的数据行。 根据所使用的比较方式不同,内联接又分为等值联接、不等值联接和自然联接三种。 (1)等值与非等值联接查询 联接查询中用来联接两个表的条件称为联接条件或联接谓词,它的一般格式为: 表名1.列名1 比较运算符 表名2.列名2 可以使用的比较运算符有:、、=、、=、!=(或),还可以使用BETWEEN…AND…之类的谓词。当联接运算符为等号(=)时,称为等值联接。而使用其他比较运算符就构成了非等值联接。 【例5.23】查询每个学生选修课程的情况。 学生情况存放在Student表中,学生选课情况存放在SC表中,所以本查询实际上涉及Student与SC两个表。这两个表之间的联系通过公共属性Sno实现。 法(一):在FROM子句中指定联接 SELECT Student.*, SC.* FROM Student INNER JOIN SC ON Student.Sno = SC.Sno 法(二):在WHERE子句中指定联接 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno = SC.Sno 本例中,SELECT子句、ON子句与WHERE子句中的属性名前都加上了表名前缀,这是为了避免混淆,因为在Student表和SC表中都有属性Sno。如果属性名在参加联接的各表中是惟一的,则可以省略表名前缀。 SQL SERVER 2005系统执行该联接操作的一种可能过程是: 首先,在Student表中找到第一个元组,然后从头开始扫描SC表,逐一查找与Student第一个元组的Sno相等的SC元组; 找到后就将Student中的第一个元组与该元组拼接起来,形成结果表中的一个元组; SC全部查找完后,再找Student中的第二个元组,然后再从头开始扫描SC表,逐一查找满足联接条件的元组,找到后就将Student中的第二个元组与该元组拼接起来,形成结果表中的一个元组。 重复以上操作,直到Student表中的全部元组都处理完毕。 一般情况下,不等值联接没有多大意义,不单独使用,它通常和等值联接一起组成复合条件,共同完成一组查询。 【例5.24】查询每个学生选修课程成绩大于80′的情况。 学生情况存放在Student表中,学生选课情况存放在SC表中,所以本查询实际上涉及Student与SC两个表。这两个表之间的联系是通过公共属性Sno实现的。 法(一):在FROM子句中指定联接 SELECT Student.*, SC.* FROM Student INNER JOIN SC ON Student.Sno = SC.Sno AND SC.Grade 80 法(二):在WHERE子句中指定联接 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno = SC.Sno AND SC.Grade 80 5.6.3 外联接查询 在内联接操作中,只有满足联接条件的元组才能作为结果输出,但是有时需要以Student表为主体列出每个学生的基本情况及其选课情况,若某个学生没有选课,则只输出其基本情况信息,其选课信息为空值即可,这时可以使用外联接(OUTER JOIN)。 在Microsoft SQL SERVER 2005系统中,可以使用3种外联接关键字,即LEFT OUTER JOIN,RIGHT OUTER JOIN和FULL OUTER JOIN。 LEFT OUTER JOIN表示左外联接,结果集中将包含满足搜索条件的所有数据和第一个联接表中不满足条件的数据(对应第二个表中的数据为NULL)。 RIGHT OUTER JOIN表示右外联接,结果集中将包含满足搜索条件的所有数据和第二个联接表中不满足条件的数据(对应第一个表中的数据为NULL)。 FULL OUTER JOIN表示全外联接,它综合了左外联接和右外联接的特点,把两个表中不满足条件的数据集中起来出现在结果集中,这些数据在另外一个表中的对应值是NULL。 【例5.26】查询所有学生选修课程的情况,包括没有选修课程的学生。 本例和【例5.23】不同的地方就在于,【例5.23】只需输出有选修课程的学生信息,而本例却必须输出全部学生信息。因此,必须使用外联接才能实现本例查询。SQL语句如下: SELECT Student.*, SC.* FROM Student LEFT OUTER JOIN SC ON Student.Sno = SC.Sno 在该查询语句中,使用了左外联接。所以Student表中的数据将全部输出,而表中不满足查询条件的数据记录在对应的SC表中都用NULL

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档