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;
相关推荐
前方一片光明7 小时前
SQL SERVER——生成sql:删除所有log表中,user_name是某用户的数据
数据库·sql·oracle
Gauss松鼠会8 小时前
【GaussDB】在duckdb中查询GaussDB的数据
数据库·sql·database·gaussdb
虹科网络安全8 小时前
艾体宝洞察 | Redis vs ElastiCache:哪个更具成本效益?
数据库·redis·缓存
自在极意功。8 小时前
MyBatis 动态 SQL 详解:从基础到进阶实战
java·数据库·mybatis·动态sql
老邓计算机毕设8 小时前
SSM校园订餐系统7z0dm(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·菜品管理系统·ssm 框架·ssm 框架开发·校园线上订餐平台
sxlishaobin8 小时前
MySQL- explain
数据库·mysql
曹牧9 小时前
Oracle:判断一个字符串出现次数
数据库·oracle
源代码•宸9 小时前
Leetcode—620. 有趣的电影&&Q3. 有趣的电影【简单】
数据库·后端·mysql·算法·leetcode·职场和发展
快乐肚皮9 小时前
MySQL递归CTE
java·数据库·mysql·递归表达式
2301_800256119 小时前
地理空间数据库中的CPU 和 I/O 开销
数据库·算法·oracle