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 root密码的重置方法
Apr 21 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
记一次Mysql不走日期字段索引的原因小结
Oct 24 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
MySQL的索引你了解吗
Mar 13 MySQL
优化Mysql查询的示例
Apr 26 MySQL
MySQL安装失败的原因及解决步骤
Jun 14 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
谈谈PHP的输入输出流
2007/02/14 PHP
用PHP生成静态HTML速度快类库
2007/03/18 PHP
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
PHP培训要多少钱
2017/06/06 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
Flask核心机制之上下文源码剖析
2018/12/25 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
劳动模范事迹材料
2014/01/19 职场文书
初中中等生评语
2014/12/29 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书