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 角色(role)功能介绍
Apr 24 MySQL
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
Mysql中有关Datetime和Timestamp的使用总结
Dec 06 MySQL
将MySQL的表数据全量导入clichhouse库中
Mar 21 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
Mysql 一主多从的部署
May 20 MySQL
Mysql如何查看是否使用到索引
Dec 24 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
模仿OSO的论坛(二)
2006/10/09 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
php join函数应用
2011/05/04 PHP
php 文件上传实例代码
2012/04/19 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
javascript知识点收藏
2007/02/22 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
Python中多线程及程序锁浅析
2015/01/21 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
大学本科生职业生涯规划书范文
2014/09/14 职场文书
对照四风自我剖析材料
2014/10/07 职场文书