MySQL 四种连接和多表查询详解


Posted in MySQL onJuly 16, 2021

MySQL 内连接、左连接、右连接、外连接、多表查询

构建环境:

create table t_emp(
	id int primary key, 
	name varchar(20),
	deptId int
);
create table t_dept(
	id int primary key,
	name varchar(20)
);
insert into t_dept(id, name) values(1, '设计部');
insert into t_dept(id, name) values(2, '开发部');
insert into t_dept(id, name) values(3, '测试部');
insert into t_emp(id, name, deptId) values(1, '张三', 1);
insert into t_emp(id, name, deptId) values(2, '李四', 2);
insert into t_emp(id, name, deptId) values(3, '王五', 0);
# ps:为了说明方便,t_emp 表 说成 A 表, t_dept 表说成 B 表

目录

一、INNER JION 内连接 ( A ∩ B )

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e INNER JOIN t_dept d ON  e.deptId = d.id;

MySQL 四种连接和多表查询详解

二、LEFT JOIN 左外连接( A 全有 )

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d ON e.deptId = d.id;

MySQL 四种连接和多表查询详解

三、RIGHT JOIN 右外连接 (B 全有)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId = d.id;

MySQL 四种连接和多表查询详解

四、FULL JOIN 全外连接( A + B)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d 
ON e.deptId = d.id UNION 
SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId = d.id;

MySQL 四种连接和多表查询详解

五、LEFT Excluding JOIN ( A - B 即 A 表独有)+

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d ON e.deptId= d.id WHERE d.id is null;

MySQL 四种连接和多表查询详解

六、RIGHT Excluding JOIN ( B - A 即 B表独有)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId= d.id WHERE e.id is null;

MySQL 四种连接和多表查询详解

七、OUTER Excluding JOIN (A 与 B 各自独有)

MySQL 四种连接和多表查询详解

SELECT * FROM t_emp e LEFT JOIN t_dept d ON e.deptId= d.id WHERE d.id is null
UNION
SELECT * FROM t_emp e RIGHT JOIN t_dept d ON e.deptId= d.id WHERE e.id is null;

MySQL 四种连接和多表查询详解

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

MySQL 相关文章推荐
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
MySQL中varchar和char类型的区别
Nov 17 MySQL
全面盘点MySQL中的那些重要日志文件
Nov 27 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
一文解答什么是MySQL的回表
Aug 05 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php curl 上传文件代码实例
2015/04/27 PHP
php中namespace及use用法分析
2016/12/06 PHP
简单JS代码压缩器
2006/10/12 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
Python CSV模块使用实例
2015/04/09 Python
Python实现LRU算法的2种方法
2015/06/24 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
python把转列表为集合的方法
2019/06/28 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
python标准库OS模块详解
2020/03/10 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
团组织关系介绍信
2014/01/12 职场文书
商业房地产广告语
2014/03/13 职场文书
长江三峡导游词
2015/01/31 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
企业安全生产规章制度
2015/08/06 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书