SQL关联查询

2020-08-19 15:55:24 浏览数 (2)

从2张或多张表中,取出有关联的数据

关联查询一共有几种情况:

内连接:INNER JOIN 、CROSS JOIN

(1)形式一

select 字段列表

from A表 inner join B表

on 关联条件

【where 其他筛选条件】

说明:如果不写关联条件,会出现一种现象:笛卡尔积

关联条件的个数 = n - 1,n是几张表关联

on只能和join一起用

(2) 形式二

select 字段列表

from A表 , B表

where 关联条件 【and 其他筛选条件】

外连接:左外连接(LEFT OUTER JOIN)

左连接:

第一种结果:A

select 字段列表

from A表 left join B表

on 关联条件

第二种结果:A - A∩B

select 字段列表

from A表 left join B表

on 关联条件

where 从表的关联字段 is null

右外连接(RIGHT OUTER JOIN)

第一种结果:B

select 字段列表

from A表 right join B表

on 关联条件

第二种结果:B - A∩B

select 字段列表

from A表 right join B表

on 关联条件

where 从表的关联字段 is null

全外连接(FULL OUTER JOIN)

使用union实现全连接的效果

(1)A ∪ B

select 字段列表

from A表 left join B表

on 关联条件

union

select 字段列表

from A表 right join B表

on 关联条件

(3)A ∪ B - A ∩ B

select 字段列表

from A表 left join B表

on 关联条件

where 从表的关联字段 is null

union

select 字段列表

from A表 right join B表

on 关联条件

where 从表的关联字段 is null

自连接:当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义

0 人点赞