数据库表之间的连接类型
1,内连接
inner join
内连接,对于mysql和postgresql是默认的连接方式
连接的表中,结果只显示完全符合条件的表记录信息,使用ON来指定表之间的连接条件
2,左外连接
left [outer] join
左外连接,从左表那里返回所有的符合where的记录,不满足连接条件的右表列用NULL补齐,使用ON来指定表之间的连接条件
3,右外连接
right [outer] join
右外连接,从右表那里返回所有的符合where的记录,不满足连接条件的左表列用NULL补齐,使用ON来指定表之间的连接条件
4,全连接
full [outer] join
全连接,将两个表的所有记录都返回,不满足连接条件的列用NULL填充,mysql不支持全连接
5,交叉连接
cross join
交叉连接,返回结果是两个表的笛卡尔积
postgresql连接条件特有:
使用USING(列)来定义连接条件,连接的两端都具有相同的连接列名。它接受共享列名的一个逗号分隔 列表,并且为其中每一个共享列构造一个包含等值比较的连接条件。 例如用USING (a, b)连接T1 和T2会产生连接条件 ON T1.a = T2.a AND T1.b = T2.b
JOIN USING的输出会废除冗余列:不需要把匹配 上的列都打印出来,因为它们必须具有相等的值。
NATURAL是USING的缩写形式
T1 NATURAL { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2
它形成一个USING列表, 该列表由那些在两个表里都出现了的列名组成。和USING一样,这些列只在输出表里出现一次。如果不存在公共列,NATURAL的行为将和CROSS JOIN一样。