SQL中的各种连接及查询

SQL中的各种连接及查询

有如下两张表:
TEST_USERONE 、TEST_USERTWO
SQL中的各种连接及查询_第1张图片
SQL中的各种连接及查询_第2张图片

内连接
两个表的内链接就是两个表的并集。
在百度百科中解释内连接又可称之为普通连接或者自然连接。 这个说法有误,确切说 自然连接是特殊的内连接。下面会叙述自然连接。
 select * from TEST_USERONE t inner join Test_Usertwo t2 on t.id = t2.id2

SQL中的各种连接及查询_第3张图片

外连接
两个表的内链接就是两个表的交集。关键字 full outer join 或者full join
select * from TEST_USERONE t full outer join Test_Usertwo t2 on t.id = t2.id2

SQL中的各种连接及查询_第4张图片

左外连接
A的全集 若B中不存在就null。
 Select * from TEST_USERONE t left outer join Test_Usertwo t2 on t.id = t2.id2

或者

 Select * from TEST_USERONE t , Test_Usertwo t2 where t.id = t2.id2(+)

SQL中的各种连接及查询_第5张图片

SQL中的各种连接及查询_第6张图片
右外连接
B的全集 若A中不存在就null(类似)
 Select * from TEST_USERONE t right outer join Test_Usertwo t2 on t.id = t2.id2

或者

Select * from TEST_USERONE t , Test_Usertwo t2 where t.id(+) = t2.id2

SQL中的各种连接及查询_第7张图片
SQL中的各种连接及查询_第8张图片

还可以使用外连接实现以下情况:
A中存在而B中不存在 使用左连接或者全连接实现

Select * from TEST_USERONE t left join Test_Usertwo t2 on t.id = t2.id2 where t2.id2 is null

SQL中的各种连接及查询_第9张图片

A中存在B中不存在并且 B中存在而A中不存在
使用全连接实现。

Select * from TEST_USERONE t full join Test_Usertwo t2 on t.id = t2.id2 where t2.id2 is null or t.id is null
SQL中的各种连接及查询_第10张图片
Cross join
它就是笛卡尔乘积,无法用文氏图表示。
Select * from TEST_USERONE t cross join Test_Usertwo t2 ; 或者 select * from TEST_USERONE t , Test_Usertwo t2;

SQL中的各种连接及查询_第11张图片

内连接和等值连接的效果是相同的。
自然连接是一种特殊的等值连接。关键字为natural join

select * from TEST_USERONE natural join Test_Usertwo

SQL中的各种连接及查询_第12张图片

(自然连接是没有on的)
等值连接仅要求字段的属性值相同,查询出来的结果集包含两个表中全部字段。
两个自然连接的表不仅要求字段的属性值相同,还要求字段的名字也相同。查询出来的结果会进行投影处理,相同的那个字段名,只会保留一列。

你可能感兴趣的:(连接,sql连接)