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 19 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
排查并解决MySQL生产库内存使用率高的报警
Apr 11 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
MySQL时区造成时差问题
Apr 13 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 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中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
javascript常用的方法分享
2015/07/01 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
校长就职演讲稿
2014/01/06 职场文书
募捐倡议书
2014/04/14 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
十八大标语口号
2014/10/09 职场文书
群众路线个人整改方案
2014/10/25 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
2016年感恩节活动总结大全
2016/04/01 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL
python数字转对应中文的方法总结
2021/08/02 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers