Sql语句基础之内连接(inner join)、左连接(left join)、右连接(right join)
这篇文章我们主要来讲一讲sql语句中的join关键字,它实现的功能跟它的字面意思一样,将两个表连接起来。在sql语法中派生出多种join的方式,这里我们主要将内连接(inner join)、左连接(left join)、右连接(right join)这三种。
准备数据
我们先准备两张表的数据,一张表是member:

另一张表是account:

内连接(inner join)
内连接的关键字是 inner join,也可以简写成join,我们可以写成下面这两种形式:
select * from member t1 inner join account t2 on t1.id=t2.memberid; select * from member t1 join account t2 on t1.id=t2.memberid;
inner join会把被连接的两张表中都能够匹配的记录显示出来,不能够匹配的就被舍弃,于是我们执行sql语句后得到以下结果:

inner join的结果集如下图所示:

左连接(left join)
左连接的关键字是left join,它是left outer join的缩写,所以我们有以下两种写法:
select * from member t1 left join account t2 on t1.id=t2.memberid;
select * from member t1 left outer join account t2 on t1.id=t2.memberid;
left join同样是把两张表连接起来,但是它会以写在左边的这张表的数据为准,如果右边这张表中没有找到对应的记录,则后面的字段用null来填充,于是这两句sql的执行结果:

left join的结果集如下图所示:

右连接(right join)
右连接的关键字是right join,它是right outer join的缩写,所以我们同样有以下两种写法:
select * from member t1 right join account t2 on t1.id=t2.memberid;
select * from member t1 right outer join account t2 on t1.id=t2.memberid;
right join同样是把两张表连接起来,但是它会以写在右边的这张表的数据为准,如果左边这张表中没有找到对应的记录,则前面的字段用null来填充,于是这两句sql的执行结果:

right join的结果集如下图所示:

由此,我们可以想到,如果我们把两张表的位置互换,然后再把left join和right join互换,那么我们执行sql后会得到同样的结果,有兴趣的可以试一试。