一、外连接查询语法:(实际开发中,左外连接的使用频率要高于右外连接)
左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...;
相当于查询表1(左表)的所有数据 包含 表1和表2交集部分的数据
右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;
相当于查询表2(右表)的所有数据 包含 表1和表2交集部分的数据
二、外连接演示
1.查询participators表中的所有数据,和对应的部门信息(左外连接):必须使用左外连接,因为participators表中的陈友谅没有dept_id
而左外连接会完全包含左表(participators)的数据,因此participators中的陈友谅也会被查出来
select p.*, d.name
from participators p
left outer join department d on p.dept_id = d.id;
select p.*, d.name
from participators p
left join department d on p.dept_id = d.id;
2.查询department表中的所有数据,和对应的员工信息(右外连接):右外连接完全包含右表的所有数据,而department表中的数据没有与陈友谅相关联的数据,因此陈友谅查不出来
select d.*, p.*
from participators p
right outer join department d on d.id = p.dept_id;
select d.*, p.*
from participators p
right outer join department d on p.dept_id = d.id;
也可以使用左外连接实现右外连接的操作(左右都是相对的,只要把右外连接中的右变为左,右外连接中的左变为右,再进行左外连接就行了)
select d.*, p.*
from department d
left outer join participators p on d.id = p.dept_id;