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时间盲注的五种延时方法实现
May 18 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
MySQL系列之七 MySQL存储引擎
Jul 02 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
Mar 22 MySQL
以MySQL5.7为例了解一下执行计划
Apr 13 MySQL
MySQL去除密码登录告警的方法
Apr 20 MySQL
Mysql 一主多从的部署
May 20 MySQL
一文弄懂MySQL索引创建原则
一文了解MySQL二级索引的查询过程
Mysql数据库表中为什么有索引却没有提高查询速度
教你如何让spark sql写mysql的时候支持update操作
Feb 15 #MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 #MySQL
Mysql Innodb存储引擎之索引与算法
深入讲解数据库中Decimal类型的使用以及实现方法
You might like
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php根据身份证号码计算年龄的实例代码
2014/01/18 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
python中的多重继承实例讲解
2014/09/28 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python3匿名函数用法示例
2018/07/25 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
python安装本地whl的实例步骤
2019/10/12 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
keras导入weights方式
2020/06/12 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
校园门卫岗位职责
2013/12/09 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
董事长助理岗位职责
2014/02/18 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
元旦促销方案
2014/03/15 职场文书
员工安全承诺书
2014/05/22 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
2014年市场部工作总结
2014/11/25 职场文书
答谢酒会主持词
2015/07/02 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers