表的并联:union :去除并联的重复项;union all:不去除重复项
MySQL提供了连接查询的函数,可以把多张表联合起来查询
1、内连接查询
表1 join 表2 on 连接条件
2、外连接查询
(1)左外连接:表1 left join 表2 on 连接条件
左外连接显示左表中的全部数据,右表中只显示满足条件的数据,如果左表中的数据右表没有连接点,则填充null。
(2)右外连接:表1 rigth join 表2 on 连接条件
右外连接显示右表中的全部数据,左表中只显示满足条件的数据,如果右表中的数据左表没有连接点,则填充null。
3、全连接
MySQL中不支持全连接,如果想全连接可以通过左外连接、右外连接、union共同操作,详见下面的例子。
有两张表,一张记录员工的Id和姓名,另一张表记录员工的id和薪水。要求输出一张同时包含所有员工姓名和薪水的表,如果信息丢失则填充null。
很明显,Employee表中没有id为1的员工薪水,Salaries表中没有id为2的员工姓名,在两张表的员工id同时不全的情况下,左外连接和右外连接都只能显示出部分员工信息,因此需要长时全连接。
操作步骤:
1、首先将Employee表与Salaries表进行左外连接,找到没有薪水信息的员工
/2、再将Employee表与Salaries表右外连接,找到没有姓名信息的员工。
/3.最后使用union将两张表联合起来
代码如下
SELECT
e.employee_id,
e.NAME,
s.salary
FROM
employees e
LEFT JOIN salaries s ON e.employee_id = s.employee_id
UNION
SELECT
s.employee_id,
e.NAME,
s.salary
FROM
employees e
RIGHT JOIN salaries s ON e.employee_id = s.employee_id