表连接

数据库表之间的连接类型

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的输出会废除冗余列:不需要把匹配 上的列都打印出来,因为它们必须具有相等的值。

NATURALUSING的缩写形式

T1 NATURAL { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2

它形成一个USING列表, 该列表由那些在两个表里都出现了的列名组成。和USING一样,这些列只在输出表里出现一次。如果不存在公共列,NATURAL的行为将和CROSS JOIN一样。

posted @ 2017-05-17 17:01  hellowcf  阅读(181)  评论(0编辑  收藏  举报