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 26 MySQL
MySQL5.7并行复制原理及实现
Jun 03 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
彻底解决MySQL使用中文乱码的方法
Jan 22 MySQL
MySQL优化及索引解析
Mar 17 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
Aug 05 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来处理多个提交任务
2008/05/08 PHP
ie6 动态缩略图不显示的原因
2009/06/21 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
python中的内置函数getattr()介绍及示例
2014/07/20 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Python bytes string相互转换过程解析
2020/03/05 Python
Python实现代码块儿折叠
2020/04/15 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
JSF的标签库有哪些
2012/04/27 面试题
简历中自我评价分享
2013/10/09 职场文书
实习生自我评价
2014/01/18 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
联谊会开场白
2015/06/01 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书