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 如何分析查询性能
May 12 MySQL
浅谈MySQL 亿级数据分页的优化
Jun 15 MySQL
MySQL开启事务的方式
Jun 26 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
MYSQL如何查看进程和kill进程
Mar 13 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 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/21 PHP
PHP中比较时间大小实例
2014/08/21 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python中调试或排错的五种方法示例
2019/09/12 Python
django admin 添加自定义链接方式
2020/03/11 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
python程序需要编译吗
2020/06/19 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
2014迎新年晚会策划方案
2014/02/23 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
开学第一天的感想
2015/08/10 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
LeetCode189轮转数组python示例
2022/08/05 Python
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript