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令人咋舌的隐式转换
Apr 05 MySQL
MySQL Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
Mysql中有关Datetime和Timestamp的使用总结
Dec 06 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL如何使备份得数据保持一致
May 02 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
mysql全面解析json/数组
Jul 07 MySQL
MySQL深分页问题解决思路
Dec 24 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提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
如何签定毕业生就业协议书
2014/09/28 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
迟到检讨书
2015/01/26 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
python自动化测试之Selenium详解
2022/03/13 Python