【详解】MySQL JOINS大总结
以下图结合例子,自己敲一遍。
SQL语句的JOIN连接在开发中非常常用。
先看下面这张图,包括了内连接inner join,左连接left join,右连接 right join等。
以下两个表为例子,一个是tbl_emp,一个是tbl_dept。
CREATE TABLE `tbl_emp`(`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`deptId` int(11) DEFAULT NULL,PRIMARY KEY(`id`),KEY `fk_dept_id`(`deptId`)
)ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET=UTF8;CREATE TABLE `tbl_dept`(`id` int(11) NOT NULL AUTO_INCREMENT,`deptName` varchar(30) DEFAULT NULL,`locAdd` VARCHAR(40) DEFAULT NULL,PRIMARY KEY(`id`)
)ENGINE = INNODB AUTO_INCREMENT= 1 DEFAULT CHARSET=utf8;insert into tbl_dept(deptName,locAdd) values('RD',11);
insert into tbl_dept(deptName,locAdd) values('HR',12);
insert into tbl_dept(deptName,locAdd) values('MK',13);
insert into tbl_dept(deptName,locAdd) values('MIS',14);
insert into tbl_dept(deptName,locAdd) values('FD',15);insert into tbl_emp(NAME,deptId) values('z3',1);
insert into tbl_emp(NAME,deptId) values('z4',1);
insert into tbl_emp(NAME,deptId) values('z5',1);
insert into tbl_emp(NAME,deptId) values('w5',2);
insert into tbl_emp(NAME,deptId) values('w6',2);
insert into tbl_emp(NAME,deptId) values('s7',3);
insert into tbl_emp(NAME,deptId) values('s8',4);
insert into tbl_emp(NAME,deptId) values('s9',51);
①内连接 inner join:查询出两表之间公共的数据部分
SELECT * from tbl_emp e
INNER JOIN
tbl_dept d
ON e.deptId = d.id;
②左连接left join:以左表为中心,查出左表所有的数据,右表中查询出符合条件的数据
SELECT * from tbl_emp e
left JOIN
tbl_dept d
ON e.deptId = d.id;
③右连接right join:以右表为中心,查询出右表所有的数据,左表中查询出符合条件的数据
SELECT * from tbl_emp e
RIGHT JOIN
tbl_dept d
ON e.deptId = d.id;
④ 左连接left join :
SELECT * from tbl_emp e
left JOIN
tbl_dept d
ON e.deptId = d.id
WHERE d.id is NULL;
⑤右连接right join:查询出右表的独有部分。
SELECT * FROM tbl_emp e
RIGHT JOIN
tbl_dept d
ON e.deptId = d.id
WHERE e.id is NULL;
⑥全查询 union:查询出左表、右表的全部部分包括公共部分的去重。
# 两表的左查询
(SELECT * FROM tbl_emp e
LEFT JOIN tbl_dept d
ON e.deptId = d.id)
UNION
# 两表的右查询
(SELECT * FROM tbl_emp e
RIGHT JOIN tbl_dept d
ON e.deptId = d.id);
⑦差查询 union:查询出左表独有的部分、右表独有的部分。
SELECT * FROM tbl_emp e
LEFT JOIN tbl_dept d
ON e.deptId = d.id
WHERE d.id is null
UNION
SELECT * FROM tbl_emp e
RIGHT JOIN tbl_dept d
ON e.deptId = d.id
WHERE e.deptId is NULL
【详解】MySQL JOINS大总结相关推荐
- mysql 事物的持久性是指_详解MySQL中事务的持久性实现原理
前言 说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什 ...
- mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数
<Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...
- mysql c接口返回自增id_详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...
- mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...
- mysql影响行数解析_详解MySQL的数据行和行溢出机制
一.行 有哪些格式? 你可以像下面这样看一下你的mysql行格式设置. 其实mysql的数据行有两种格式,一种就是图中的 compact格式,还有一种是redundant格式. compact是一种紧 ...
- 详解 MySQL 基准测试和 sysbench 工具
前 言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处 ...
- mysql如何查看事务日记_详解 Mysql 事务和Mysql 日志
事务特性 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节. 2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破 ...
- mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)
前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...
- mysql分区表truncate分区数据_详解MySQL分区表
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...
- mysql分区表详解_详解MySQL分区表
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...
最新文章
- 015_Vue生命周期
- abaqus单位怎么设置_ABAQUS-怎样模拟塑料瓶的抗挤压能力?
- 全球及中国陶瓷承烧板行业发展态势及运营前景研究报告2021-2027年版
- 细述:nginx http内核模块提供的变量和解释
- 1096 Consecutive Factors (20 分)_24行代码AC
- createEventObject 与 createEvent EDIT WATCH
- ADO.NET数据库编程
- java计算机二级内容总结
- 全链路压测原理篇(方案 概念 架构 实现)
- CAD贱人工具箱插件
- iOS 汉语数字与阿拉伯数字的相互转化
- 使用FFmpeg将MP4转换为ts文件
- 20款优秀的免费 WordPress 企业主题
- 比例模型 scale model
- 堡垒前线7月30日服务器维护,堡垒前线7月24日停服维护公告 全新功能初心岛正式上线...
- torch.flatten、np.flatten 详解
- 自定义控件其实很简单2
- matlab如何看线性趋势线,matlab自动画趋势线指标公式
- 计算机音乐里面的歌怎么关掉,电脑qq音乐怎么退出登录
- 喜欢二次元的程序员,是如何宣泄的?看到他们的电脑桌面就知道了
热门文章
- 转载:Jmeter压力测试教程(入门篇)
- 板块模型构建、k点选定及Miller指数对表面分类
- 【软件工程】— 文档总结
- android之电源锁
- 证件照怎么制作?分享几种证件照生成器
- 软件工程要学计算机网络吗,计算机网络与软件工程专业学习心得.docx
- java.lang.IllegalStateException: commit already called
- 机你太美 | 华为vs三星折叠屏大战,结果王自如赢了?!
- 文件名批量转换为拼音名
- python不运行一段代码_Python:当满足某个条件而不使用“if”语句时跳过一段代码(计算)...