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 相关文章推荐
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
MySQL创建定时任务
Jan 22 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
Mysql中@和@@符号的详细使用指南
Jun 05 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
一文弄懂MySQL索引创建原则
一文了解MySQL二级索引的查询过程
Mysql数据库表中为什么有索引却没有提高查询速度
教你如何让spark sql写mysql的时候支持update操作
Feb 15 #MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 #MySQL
Mysql Innodb存储引擎之索引与算法
深入讲解数据库中Decimal类型的使用以及实现方法
You might like
用Zend Encode编写开发PHP程序
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
一个图形显示IP的PHP程序代码
2007/10/19 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Python占用的内存优化教程
2019/07/28 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
名人演讲稿范文
2013/12/28 职场文书
安全生产汇报材料
2014/02/17 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年技术部工作总结
2014/12/12 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
学校远程教育工作总结
2015/08/11 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python