logo

哈达波斯网|专注网站

SQL

Sql多表连接查询(inner join、full join、left join、right join)

SQL  2018/4/23 9:44:27  管理员  

前提条件:假设有两个表,一个是学生表,一个是学生成绩表。

15244479462139798.jpg

表的数据有:

15244479468417897.jpg

一、内连接-inner jion :

最常见的连接查询可能是这样,查出学生的名字和成绩:

select s.name,m.mark from student s,mark m where s.id=m.studentid

上面就是我们最常见的inner join,即内连接,把符合student.id=mark.studentid 条件的元组才选出来,也可以写成:

select s.name,m.mark from student s inner join mark m on s.id=m.studentid

符合条件的只有两条结果,查出结果为:

15244479465581070.jpg

 

二、左连接-left join:

左连接是把左边的表的元组全部选出来:

select s.name,m.mark from student s left join mark m on s.id=m.studentid

上面语句就是把左边的表,即student表中的元组全部选出,尽管有些分数表是没数据的,也选了出来,选出的结果为:

15244479467161787.jpg

 

三、右连接-right join:

右连接就是把右边表的数据全部取出,不管左边的表是否有匹配的数据:

select s.name,m.mark from student s right join mark m on s.id=m.studentid

上面的语句就是把mark分数表的数据全部取出来,不管student表中是否有数据匹配,如下图所示:

15244479461979220.jpg

 

四、全连接-full join:

把左右两个表的数据都取出来,不管是否匹配:

select s.name,m.mark from student s full join mark m on s.id=m.studentid

如下图所示,学生表和成绩表的数据都取了出来:


15244479469648626.jpg

 

比较常用的是第一种,内连接,而且是用这种写法:

select s.name,m.mark from student s,mark m where s.id=m.studentid

 


上一篇:SQL Server 获取本周...下一篇:没有了
网站首页  | 最新公告  | 漏洞修补  | 网站模板  | 知识文档  | 与我联系
Copyright © 2015 jlasp.com All Rights Reserved.
哈达波斯网|专注网站 版权所有
地址:吉林省吉林市昌邑区 联系QQ:383612004 联系人:董先生
未经本站授权,禁止复制或建立镜像,内容仅用于学习参考!
ICP备案号:吉ICP备15000891号-1 | 

吉公网安备 22020202000301号