- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多表联接查询
多表联接查询
一、多表联接查询的分类
多表联接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征。
联接查询可分为三大类,分另为:
1. 内联接。
2. 外联接。
3. 交叉联接。
那么我们一起来看一下如何使用多表联接查询。
A. 内联接:内联接是最典型、最常用的联接查询,它根据表中共同的列来进行匹配,只有满足匹配的条件的数据才能被查询出来。通常,两个表存在主外键关系时会使用到内联接查询。
内联结常使用“=”比较运算符来判断两列数据是否相等,在这里我们通过几个实例来学习内联接查询。
a) 先在SQL Server 2005中新建两个表usersTable和usersNote,两表的内容如下面的图中所示。
表usersTable
表usersNote
b) 在建好相应的表后,我们就可以进行多表查询了,首先内联接我们有两种方式来查询。
第一种:直接在Where条件里通过表达式来进行表之间的关联。
select usersTable.myuser,usersTable.mypwd,
usersNote.useraddress,userphonenumber
--查询显示dbo.usersTable和dbo.usersNote表中的指定的内容
from dbo.usersTable,dbo.usersNote
--内联接两表
where usersTable.myuser=usersNote.username
--两表匹配的条件
在SQL 2005中的查询结果如下:
第二种:通过使用Inner Join关键字进行表之间的关联。
select usersTable.myuser,usersTable.mypwd,
usersNote.useraddress,userphonenumber
from dbo.usersTable inner join dbo.usersNote
on (usersTable.myuser=usersNote.username)
查询结果如下:
B. 外联接:外联接又可分为左外联接、右外联接、完整联接三种。
外联接与内联接区别在于,不仅显示两个表关联字段匹配的记录,同时不匹配记录根据外联接类型也会显示。
a) 左外联接:Left Join 或Left Outer Join。
左外联接的结果集包括Left Join子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有区配行,则在相关联的结果集行中,右表的所有选择列均为空值。
以下是左外联接语句:
select usersTable.myuser,usersTable.mypwd,
usersNote.useraddress,userphonenumber
--查询显示dbo.usersTable和dbo.usersNote表中的指定的字段
from dbo.usersTable left join dbo.usersNote
on usersTable.myuser=usersNote.username
--左外联接两表
查询结果如下图:
可以看到最后一行的右表中不匹配的行显示部分均为NULL。
b) 右外联接:Right Join 或Right Outer Join.
右外联接是左外联接的反向联接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将左表返回空值。
以下是右外联接语句:
select usersTable.myuser,usersTable.mypwd,
usersNote.useraddress,userphonenumber
--查询显示dbo.usersTable和dbo.usersNote表中的指定的字段
from dbo.usersTable left join dbo.usersNote
on usersTable.myuser=usersNote.username
--右外联接两表
查询结果如下图:
可以看到最后一行的左表中不匹配的行显示部分均为NULL
c) 完整外联接:Full Join 或Full Outer Join。
完整外联接返回左表和右表中的所有行,当某行在另一个表中没有匹配行时,则另一个表的选择列包含空值,如果表之间有区配行,则整个结果集包含相应表的数据值。
以下的完整外联接语句:
select *
--查询显示两表的所有字段
from dbo.usersTable full join dbo.usersNote
on (usersTable.myuser=usersNote.username)
--完整外联接
select usersTable.myuser
文档评论(0)