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模式设计
Apr 05 MySQL
MySQL分库分表与分区的入门指南
Apr 22 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
教你如何让spark sql写mysql的时候支持update操作
Feb 15 MySQL
mysql 体系结构和存储引擎介绍
May 06 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
Dec 24 MySQL
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
解决mysql的int型主键自增问题
QT连接MYSQL数据库的详细步骤
Jul 07 #MySQL
mysql备份策略的实现(全量备份+增量备份)
You might like
PHP基础知识回顾
2012/08/16 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
js选项卡的制作方法
2017/01/23 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
vuex入门最详细整理
2020/03/04 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
研修第一天随笔感言
2014/02/15 职场文书
开学寄语大全
2014/04/08 职场文书
狂人日记读书笔记
2015/06/30 职场文书
小学运动会通讯稿
2015/07/18 职场文书
创业计划书之酒厂
2019/10/14 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS