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 14 MySQL
详解MySQL集群搭建
May 26 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
Mysql调整优化之四种分区方式以及组合分区
Apr 13 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
MySQL 原理与优化之Limit 查询优化
Aug 14 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
深入了解php4(2)--重访过去
2006/10/09 PHP
php 日期时间处理函数小结
2009/12/18 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
php class类的用法详细总结
2013/10/17 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
javascript读写json示例
2014/04/11 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
Python中的多行注释文档编写风格汇总
2016/06/16 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
pycharm快捷键汇总
2020/02/14 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
美国轻奢时尚购物网站:REVOLVE(支持中文)
2020/07/18 全球购物
销售工作岗位职责
2013/12/24 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python