从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本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义