内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。
外连接包括:左外连接、右外连接和全外连接。
左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
右外连接:右边表数据行全部保留,右边表保留符合连接条件的行。
全外连接:左外连接和右外连接联合版本。
示例:
数据库:Oracle
表:TESTA,TESTB,TESTC,各有A,B两列。
1.内连接
内连接,即最常见的等值连接,取出的值都一一对应:
select * from TESTA,TESTB where TESTA.A = TESTB.A
结果:
2.外连接
外连接分为左外连接,右外连接和全外连接
(1)左外连接 left outer join 或者 left join
左外连接就是在等值连接的基础上加上主表中的未匹配数据:
select * from TESTA left outer join TESTB on TESTA.A = TESTB.A
结果:
三个表做左外连接:
select * from TESTA left outer join TESTB on TESTA.A = TESTB.A left outer join TESTC on TESTA.A = TESTC.A
结果:
(2)右外连接 right outer join 或者 right join
右外连接是在等值连接的基础上加上被连接表的不匹配数据:
select * from TESTA right outer join TESTB on TESTA.A = TESTB.A
结果:
(3)全外连接 full outer join 或者 full join
全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上:
select * from TESTA full outer join TESTB on TESTA.A = TESTB.A
结果:
总结:
1.内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的值。内连接分三种:
(1)等值连接:在连接条件中使用等于号“=”运算符比较被连接列的值,其查询结果中列出连接表中的所有列,包括其中的重复列。
select * from 表1 inner join 表2 on 条件
(2)不等连接:在连接条件使用除等与“=”运算符以外的其它运算符比较连接的列的值,这些运算符包括>、>=、<=、<、!>、!<、和<>。
select * from 表1 inner join 表2 on 条件
(3)自然连接:自然连接是一种特殊的等值连接,他要求两个关系表中进行连接的必须是相同的属性列(名字相同),无须添加连接条件,并且在结果中消除重复的属性列。
select * from 表1 natural join 表2;
2.外链接不仅包含符合条件的,不符合条件的,也会出现在查询结果上面,只要是自己外连接那边的东西。
外连接分为三种:
(1)、左外链接 SELECT * FROM 表1 LEFT JOIN 表2 ON 条件;
(2)、右外连接 SELECT * FROM 表1 RIGHT JOIN 表2 ON 条件;
(3)、全外连接 SELECT * FROM 表1 FULL JOIN 表2 ON 条件;
3.记住最重要的一点,只要不写left、 right、 full ,只是使用join,那么就意味着这个查询是一个inner join查询,也就是内联查询。