数据库外连接和内连接详解
SQL语句中有关的连接主要有: 外连接、内链接、全连接。
内连接:
INNER JOIN
内连接为 两个表中必须都同时满足条件
内连接,即最常见的等值连接
自然连接和等值连接的区别: 等值连接会将等值条件列出两次,而自然连接只会保留一个表中的等值条件,自然连接不用指明连接条件。
外连接:
连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
左外连接:
左边表数据行全部保留,右边表保留符合连接条件的行
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
右外连接:
右边表数据行全部保留,左边表保留符合连接条件的行
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
全外连接:
左外连接 union 右外连接
右外连接 right outer join 或者 right join
右外连接是在等值连接的基础上加上被连接表的不匹配数据
RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
全外连接 full outer join 或者 full join
全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
全外连接的等价写法,对同一表先做左连接,然后右连接交叉连接:cross join :结果等于两个表行数的乘积。
select * from table1 , table2 等价于 select * from table1 cross join table2.