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中VARCHAR与CHAR格式数据的区别
May 26 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL中日期型单行函数代码详解
Jun 21 MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 MySQL
MySQL空间数据存储及函数
Sep 25 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
MySQL常用慢查询分析工具详解
Aug 14 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
基于PHP文件操作的详解
2013/06/05 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
PHP中使用BigMap实例
2015/03/30 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python实现杨辉三角思路
2017/07/14 Python
python中将字典形式的数据循环插入Excel
2018/01/16 Python
全面分析Python的优点和缺点
2018/02/07 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
UNIX文件名称有什么规定
2013/03/25 面试题
培训专员岗位职责
2014/02/26 职场文书
靠谱的活动总结
2019/04/16 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA