SQL99版外连接

外连接

看这样的场景,在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;
相关推荐
流星白龙6 小时前
【Redis】2.Redis重大版本
数据库·redis·junit
流星白龙6 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
流星白龙7 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
王八八。8 小时前
Navicat 17破解版下载安装教程 附安装激活步骤(2026 最新版)
数据库·navicat
Jelena157795857928 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
流星白龙10 小时前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
二宝哥10 小时前
MySQL 修改密码策略详解:从基础到高级配置
mysql·密码学
马优晨10 小时前
DBeaver 连接 MySQL 完整排错教程
mysql·dbeaver连接mysql·dbeaver连mysql·dbeaver连接数据库·db连接mysql
凌虚11 小时前
基于 PostgreSQL WAL 构建 CDC 系统:原理与工程实现
数据库·后端·postgresql
BullSmall11 小时前
PostgreSQL 14 pg_dumpall 完整备份指南
数据库·postgresql·oracle