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 的条件去筛选。

 

版权声明:本文为ttmdl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ttmdl/articles/6378374.html