首先在准备好两张表,我创建了一张a表和一张b表.
其中a表的数据如图
select * from a
b表的数据如图
select * from b
执行左外连接语句:
select * from a a left join b b on a.code=b.b_code
上面的语句等同于 select * from a a,b b where a.code=b.b_code(+)
结果就是上面这张图啦,我们来看一下这个结果有什么特点,首先我们可以看到a表的全部数据都被查出来了,b表的全部数据也显示出来了,但是有几行数据后面是没有任何值的,也就是空。
再来根据我们的语句分析一波,首先我们查询出了所有的字段,又用到了left join ,那么left join又叫左外连接,首先我们看left join 两边是不是有a表和b表?并且我们还给a表取了别名为a。同样b表也是取了一个别名为b。我们将a表放在了左边,现在又用的是做外连接。所以我们将a表看做是主表。查询的时候,主表的所有行都会被显示出来。我们的匹配条件是
a.code=b.b_code
b表中匹配到的结果会显示在相应的位置,而未被匹配到的结果就被置为空。
执行右外连接语句
select * from a a right join b on a.code=b.b_code
结果如图上面的语句等同于 select * from a a,b b where a.code(+)=b.b_code
有图有真相,右连接和左外连接主表是相反的,其他的都是一样的。
菜鸟一枚,各位大佬请轻喷!