SQL中的多表连接查询 (inner join,left join,right join full join) - 奔游浪子
SQL中的多表连接查询 (inner join,left join,right join full join)
SQL中的多表连接查询分为内连接和外链接2种:
内连接(inner join):就是平常的多个表通过各个表里的唯一字段连接在一起。
外链接:分为左连接,右连接,全连接。
实例:
使用最经典的 学生,课程,成绩 3个数据表:
Student Course Source
内连接:
select
s.SID,s.Name,sc.Score
from [dbo].[Student] as s inner join [dbo].[Score] as sc on s.SID=sc.SID
左连接:就是以左边的表为中心,把左边的表的所有数据都取出来,然后再根据on后的条件去对应的表里找寻符合条件的数据,但是总的结果书还是以左边的表的数据总数为准,找到了找到符合条件的则显示出来,找不到则为NULL
select
s.SID,s.Name,sc.Score
from Student as s left join Score as sc on s.SID=sc.SID
右连接:同左连接,只不过是以右边表为中心。
全连接:就是把2个表的显示出来,然后再根据on条件再显示符合条件的数据,找到了则显示出来,找不到则为NULL
select
s.SID,s.Name,sc.Score
from Student as s full join Score as sc on s.SID=sc.SID
如果是3个表进行左连接的话,应该先是前两个表左连接后得到结果集再与第3个表进行左连接,此时前2个表的结果集为中心表
select
s.SID,s.Name,sc.Score,c.CID,c.Name
from Student as s left join Score as sc on s.SID=sc.SID
left join Course as c on c.CID=sc.CID
注意:如果加where的话,则是先查询出指定的数据后在按照where 的条件去筛选。