各种连接

select * from dave;
ID  NAME8  安庆1  dave2  bl1  bl2  dave3  dba4  sf-express5  dmm

select * from b1;
ID  NAME1  dave2  bl3  big bird4  exc9  怀宁
select * from dave a full join b1 b on a.id = b.id;ID  NAME    ID NAME8  安庆      --NULL1  dave       1  dave2  bl         2  bl1  bl         1  dave2  dave       2  bl3  dba       3  big bird4  sf-express   4  exc5  dmm       --NULL--NULL         9  怀宁
  1. inner join(join)
select * from dave a right join b1 b on a.id = b.id;select * from dave a right outer join b1 b on a.id = b.id;select * from dave a ,b1 b where a.id(+) = b.id;ID  NAME      ID  NAME1  dave      1  dave2  bl        2  bl1  bl        1  dave2  dave       2    bl3  dba       3  big bird4  sf-express   4  exc9  怀宁        --没有匹配到,为null

 (三)+操作符只适用于列,而不能用在表达式上。

以下三种写法的效果是一致的:

select * from dave a natural join b1 b;select a.id, b.name from dave a join b1 b on a.id = b.id and a.name = b.name;
ID  NAME1  dave2  bl

2.2 右外连接right join +

 (一)+操作符只能在where子句中,不能与outer join同时使用。

   2. 如果数据类型不同,则会报错。

下面两种写法的效果是一致的:

select * from dave a inner join b1 b on a.id = b.id;select * from dave a join b1 b on a.id = b.id;select * from dave a, b1 b where a.id = b.id;
ID  NAME      ID  NAME1  dave     1  dave2  bl      2  b11  bl      1  dave2  dave     2  b13  dba      3  big bird4  sf-express  4  exc         

 

以下三种写法的效果是一致的:

2.3 全外连接(full outer join/full join)

左表和右表都不做限制,所有的记录都显示,两表不足的地方用null填充。全外连接不支持(+)这种写法。

 

注意:1.
如果自然连接的两个表有多个字段满足相同名称和类型,则会作为自然链接的条件

+
表示补充,哪个个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。

以下3种写法的效果是一致的:

   join默认为inner join.

自然连接natural join

(+)也可以用来表示外连接。

寻找数据类型和列名相同的字段,自动将他们连接起来,并返回所有符合条件的结果。

select * from dave a left join b1 b on a.id = b.id;select * from dave a left outer join b1 b on a.id = b.id;select * from dave a ,b1 b where a.id = b.id(+);ID  NAME     ID  NAME1  bl        1  dave1  dave      1  dave3  dba      3  big bird4  sf-express   4  exc2  dave      2  bl2  bl       2  bl5  dmm      --没有匹配到,为null8  安庆      --没有匹配到,为null

2.1 左外连接left join +

数据说明:

 (二)+操作符只能执行外连接,如果在where中包含多个条件,则所有条件都包含+操作符。

LEFT JOIN /RIGHT JOIN/FULL JOIN. 通常省略OUTER。

  1. Outer join

 (五)操作符只能用于实现左外连接和右外连接,不能用于全外连接。

 (四)+操作符不能与or in操作符一起使用。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注