外连接
看这样的场景,在ta和tb两表中查询没有对应年龄数据的学生姓名和年龄
sql
SELECT
tb.`name`,ta.`age`
FROM
tb
INNER JOIN
ta
ON
tb.`ta_id`=ta.`id`
WHERE
ta.`id` IS NULL;
结果没有,所以前面的查询是解决不了这种问题!!!
所以外连接主要就是解决这种情况,一边有数据对应的另一张表中没有数据!
外连接语法
sql
select 查询列表
from 表1 别名
【链接类型】 join 表2 别名
on 链接条件
where 数据筛选条件 .....以前讲过的其他部分;
链接类型:
左外连接 left 【outer】
右外连接 right 【outer】
全外连接 full 【outer】
掌握外连接知识点
1.外连接的查询结果为主表中有的所有记录
外表有对应数据,结果记录上显示对应数据
外表中没有对应的数据,结果记录上填充null
和内连接的区别
内连接:当从表没有记录的时候,主、从表的记录都丢掉!
外连接:当从表没有记录的时候,会保留主表的记录,对应从表null
2.左外连接:left join左边的是主表,右外连接right join 右边的是主表
3.左外连接和右外连接上互通的所以掌握一个就好
解决
在ta和tb两表中查询没有对应年龄数据的学生姓名和年龄
sql
SELECT
tb.`name`,ta.`age`
FROM
tb
LEFT JOIN
ta
ON
tb.`ta_id`=ta.`id`
WHERE
ta.`id` IS NULL;
案例
查询没有员工的部门
sql
SELECT d.`department_id`,d.`department_name`,e.`employee_id`
FROM `departments` d
LEFT JOIN `employees` e
ON d.`department_id`=e.`department_id`
WHERE e.`employee_id` IS NULL;