inner join(等值连接) 只返回两个表中联结字段相等的行,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录,对寻找孤儿记录很有用。所谓“孤儿记录”就是那些在主表中没有相关记录的相关表中的记录,孤儿记录是违反引用一致性规则的结果。
on 指定表间联结字段及其关系的等号 "=" 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录.
!外部连接只能操作已存在于数据库中的数据
MySQL中的外连接示例:
MySQL> select * from a1;
BBB
----------
101
102
103
104
105
MySQL> select * from a2;
BBB CCC
---------- --------------------
101
102
105
MySQL> select * from a1 right join a2 on a1.bbb = a2.bbb;
BBB BBB CCC
---------- ---------- --------------------
101 101
102 102
105 105
MySQL> select * from a1 left join a2 on a1.bbb = a2.bbb;
BBB BBB CCC
---------- ---------- --------------------
101 101
102 102
103
104
105 105
MySQL>
全外连接可以用变相的方法: 2个outer join 来实现
参考:
select * from apples as a
left outer join oranges as o on a.price = o.price
union
select * from apples as a
right outer join oranges as o on a.price = o.price