MySQL七大JOIN的具体使用


Posted in MySQL onFebruary 28, 2022
目录

简介

MySQL七大JOIN的具体使用

  • A的独有+AB的公有
  • B的独有+AB的公有
  • AB的公有
  • A的独有
  • B的独有
  • A的独有+B的独有+AB的公有
  • A的独有+B的独有

练习

建表

部门表

DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
	`dept_id` int(11) NOT NULL AUTO_INCREMENT,
    `dept_name` varchar(30) DEFAULT NULL,
    `dept_number` int(11) DEFAULT NULL,
    PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO `dept` VALUES ('1', 'AA', '100');
INSERT INTO `dept` VALUES ('2', 'BB', '200');
INSERT INTO `dept` VALUES ('3', 'CC', '300');
INSERT INTO `dept` VALUES ('4', 'DD', '400');
INSERT INTO `dept` VALUES ('5', 'HH', '500');

员工表

DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
    `emp_id` int(11) NOT NULL AUTO_INCREMENT,
    `emp_name` varchar(30) DEFAULT NULL,
    `emp_age` int(11) DEFAULT NULL,
    `dept_id` int(11) NOT NULL,
    PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO `emp` VALUES('1', 'zhangsan', '20', '1');
INSERT INTO `emp` VALUES('2', 'lisi', '25', '6');
INSERT INTO `emp` VALUES('3', 'wangwu', '19', '4');
INSERT INTO `emp` VALUES('4', 'zhaoliu', '29', '5');
INSERT INTO `emp` VALUES('5', 'xiaohong', '30', '2');
INSERT INTO `emp` VALUES('6', 'xiaohu', '26', '3');
INSERT INTO `emp` VALUES('7', 'zhangle', '23', '3');
INSERT INTO `emp` VALUES('8', 'qingtian', '38', '3');
INSERT INTO `emp` VALUES('9', 'xiayutian', '36', '2');
INSERT INTO `emp` VALUES('10', 'fangjia', '40', '1');
情景分析

1.左连接(left join)

A的独有+AB的公有

SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id;

MySQL七大JOIN的具体使用

2.右连接(right join)

B的独有+AB的公有

SELECT * from emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id;

MySQL七大JOIN的具体使用

3.内连接(inner join)

AB的公有

SELECT * from emp e INNER JOIN dept d ON e.dept_id=d.dept_id;

MySQL七大JOIN的具体使用

4.左外连接(left join且右表=null)

A的独有

SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id WHERE d.dept_id is null;

MySQL七大JOIN的具体使用

5. 右外连接(right join且左表=null)

B的独有

SELECT * from emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id WHERE e.dept_id is null;

MySQL七大JOIN的具体使用

6. 全连接(full outer join)

A的独有+B的独有+AB的公有

注意:MySQL不支持FULL OUTER JOIN(在ORACLE支持)。

因此使用UNION的方式来实现,可以**合并+去重**

应用场景:

要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时

特点:

1、要求多条查询语句的查询列数是一致的

2、要求多条查询语句的查询的每一列的类型和顺序最好一致

3、union关键字**默认去重,如果使用union all 可以包含重复项**

SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id UNION SELECT * FROM emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id;

MySQL七大JOIN的具体使用

7. 全外连接(full outer join且左右表=null)

A的独有+B的独有

SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id WHERE d.dept_id is null UNION SELECT * FROM emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id WHERE e.dept_id is null;

MySQL七大JOIN的具体使用

 到此这篇关于MySQL七大JOIN的具体使用的文章就介绍到这了,更多相关MySQL JOIN使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 MySQL
MySQL基础快速入门知识总结(附思维导图)
Sep 25 MySQL
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
Feb 12 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
一次Mysql update sql不当引起的生产故障记录
Apr 01 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL选择合适的备份策略和备份工具
Jun 01 MySQL
一文弄懂MySQL索引创建原则
一文了解MySQL二级索引的查询过程
Mysql数据库表中为什么有索引却没有提高查询速度
教你如何让spark sql写mysql的时候支持update操作
Feb 15 #MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 #MySQL
Mysql Innodb存储引擎之索引与算法
深入讲解数据库中Decimal类型的使用以及实现方法
You might like
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
2010/12/29 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
javascript学习网址备忘
2007/05/29 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
详解在Python中处理异常的教程
2015/05/24 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python File readlines() 使用方法
2018/03/19 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python延时操作实现方法示例
2018/08/14 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python识别验证码的实现示例
2020/09/30 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
经管应届生求职信
2013/11/17 职场文书
酒店公关部经理岗位职责
2013/11/24 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
党校学习心得体会范文
2014/09/09 职场文书
教师工作能力自我评价
2015/03/04 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
python元组打包和解包过程详解
2021/08/02 Python