您的位置:首页 > 数据库

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

2016-08-02 11:30 666 查看
SQL表连接查询(inner join、full join、left
join、right join)

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



表的数据有:



一、内连接-inner jion :

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

select s.name,m.markfrom student s,mark mwhere s.id=m.studentid


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

select s.name,m.markfrom student sinner join mark mon s.id=m.studentid
select s.name,m.mark from student s,mark m where s.id=m.studentid


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



二、左连接-left join:

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

select s.name,m.markfrom student sleft join mark m on s.id=m.studentid


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

也可以写成

select s.name,m.markfrom student s,mark mwhere s.id=m.studentid(+)


选出的结果为:



三、右连接-right join:

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

select s.name,m.markfrom student sright join mark m on s.id=m.studentid


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

也可以写成

select s.name,m.markfrom student s ,mark m where s.id(+)=m.studentid


如下图所示:



四、全连接-full join:

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

select s.name,m.markfrom student sfull join mark mon s.id=m.studentid


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



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

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


原文链接:

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

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


原文链接:http://www.cnblogs.com/still-windows7/archive/2012/10/22/2734613.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: