MySQL—多表查询—外连接

一、引言

学到内连接,它是查询的数据两张表交集的部分。而接下来看看外连接。

外连接查询语法:(分为两种)

1、左外连接

语法结构:

表1 LEFT OUTER JOIN 表2 ON 条件 ...;

( ... left out join on ...)

注意:

相当于查询表1(左表)的所有数据,而且包含表1和表2交集部分的数据。

2、右外连接

语法结构:

表1 RIGHT OUTER JOIN 表2 ON 条件 ...;

( ... right out join on ...)

注意:

相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据。

接下来去工具 DataGrip 通过两个需求去演示一下 左外连接 和 右外连接。

二、实操

(0)两张表的结构以及数据展示

员工表 emp

部门表

(1)查询emp表的所有数据,和对应的部门信息(左外连接)

因为emp表中有一条数据部门id为null,单纯用内连接查询不出来,所以要使用左外连接。

1、分析

需要操作的表结构:员工表 emp ,部门表 dept

2、连接条件

emp.dept_id = dept.id

3、编写SQL语句
sql 复制代码
/*左外连接*/
SELECT emp.*,dept.name FROM emp LEFT OUTER JOIN dept ON emp.dept_id = dept.id;
/*省略关键字 OUTER 也可以*/
SELECT emp.*,dept.name FROM emp LEFT JOIN dept ON emp.dept_id = dept.id;
(2)查询dept表的所有数据,和对应的员工信息(右外连接)
1、注意要查询的是表 dept 下的所有数据
2、编写SQL语句
sql 复制代码
SELECT d.*,e.* FROM emp AS e RIGHT OUTER JOIN dept AS d ON d.id = e.dept_id;
/*省略 OUTER*/
SELECT d.*,e.* FROM emp AS e RIGHT JOIN dept AS d ON d.id = e.dept_id;

三、总结

对于左外连接与右外连接来说,在一般的项目开发当中,左外连接用的更加多一点。

因为右外连接查询的效果值,可以根据左外连接的稍加修改就可以得出一样的查询结果。

就像上面的刚刚讲的右外连接查询的例子,改一下两张表的位置得出的结果一样。

sql 复制代码
SELECT d.*,e.* FROM dept AS d RIGHT JOIN emp AS e ON d.id = e.dept_id;

这篇博客的内容就到此为止。

相关推荐
故乡dee云3 小时前
AWS 产品太多不会选?按“网站、数据库、文件、日志”4 类需求快速匹配
数据库·云计算·aws
曹牧5 小时前
C#:问号
前端·数据库·c#
奇树谦5 小时前
《现代 Key-Value 数据库原理:从 B+Tree 到 LSM Tree》-第五篇:现代数据库横向对比
数据库·lsm-tree
李白客5 小时前
分布式集群与数据库产业:从单机到集群的架构跃迁与市场重构
数据库·分布式·架构
福大大架构师每日一题6 小时前
Redis 8.10.0 正式发布:紧凑哈希、批量导入、备份恢复、流与时序能力全面升级
数据库·redis·哈希算法
雨晨源码(同名B站)6 小时前
基于深度学习YoloV11农业病害虫害检测系统 智慧农业信息化综合管理平台 (附源码+lw文档+ppt)
数据库·人工智能·深度学习·yolo·信息可视化
DBA小马哥7 小时前
向量数据库入门到进阶:Embedding、ANN算法与RAG落地的关键术语
数据库·算法·embedding
云和数据.ChenGuang7 小时前
fastapi项目拆分实战数据模型
java·服务器·数据库·人工智能·深度学习·fastapi·强化学习
祈禾7 小时前
Redis三大特殊数据类型
运维·服务器·数据库·redis·笔记·缓存
东方护航数据恢复(深圳)7 小时前
MySQL_Oracle数据库崩溃修复全攻略_东方护航数据恢复深圳店
数据库·mysql·oracle