内链接:指链接结果仅包含符合链接条件的行,参与链接的两个表都应该符合链接条件。数据库
外链接:链接结果不只包含符合链接条件的行同时也包含自身不符合条件的行。spa
外链接包括:左外链接、右外链接和全外链接。code
左外链接:左边表数据行所有保留,右边表保留符合链接条件的行。orm
右外链接:右边表数据行所有保留,右边表保留符合链接条件的行。blog
全外链接:左外链接和右外链接联合版本。ip
示例:it
数据库:Oracleio
表:TESTA,TESTB,TESTC,各有A,B两列。class
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查询,也就是内联查询。