以下图结合例子,自己敲一遍。

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大总结相关推荐

  1. mysql 事物的持久性是指_详解MySQL中事务的持久性实现原理

    前言 说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什 ...

  2. mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数

    <Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...

  3. mysql c接口返回自增id_详解mysql插入数据后返回自增ID的七种方法

    引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...

  4. mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法

    引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...

  5. mysql影响行数解析_详解MySQL的数据行和行溢出机制

    一.行 有哪些格式? 你可以像下面这样看一下你的mysql行格式设置. 其实mysql的数据行有两种格式,一种就是图中的 compact格式,还有一种是redundant格式. compact是一种紧 ...

  6. 详解 MySQL 基准测试和 sysbench 工具

    前 言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处 ...

  7. mysql如何查看事务日记_详解 Mysql 事务和Mysql 日志

    事务特性 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节. 2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破 ...

  8. mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...

  9. mysql分区表truncate分区数据_详解MySQL分区表

    前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...

  10. mysql分区表详解_详解MySQL分区表

    前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...

最新文章

  1. 015_Vue生命周期
  2. abaqus单位怎么设置_ABAQUS-怎样模拟塑料瓶的抗挤压能力?
  3. 全球及中国陶瓷承烧板行业发展态势及运营前景研究报告2021-2027年版
  4. 细述:nginx http内核模块提供的变量和解释
  5. 1096 Consecutive Factors (20 分)_24行代码AC
  6. createEventObject 与 createEvent EDIT WATCH
  7. ADO.NET数据库编程
  8. java计算机二级内容总结
  9. 全链路压测原理篇(方案 概念 架构 实现)
  10. CAD贱人工具箱插件
  11. iOS 汉语数字与阿拉伯数字的相互转化
  12. 使用FFmpeg将MP4转换为ts文件
  13. 20款优秀的免费 WordPress 企业主题
  14. 比例模型 scale model
  15. 堡垒前线7月30日服务器维护,堡垒前线7月24日停服维护公告 全新功能初心岛正式上线...
  16. torch.flatten、np.flatten 详解
  17. 自定义控件其实很简单2
  18. matlab如何看线性趋势线,matlab自动画趋势线指标公式
  19. 计算机音乐里面的歌怎么关掉,电脑qq音乐怎么退出登录
  20. 喜欢二次元的程序员,是如何宣泄的?看到他们的电脑桌面就知道了

热门文章

  1. 转载:Jmeter压力测试教程(入门篇)
  2. 板块模型构建、k点选定及Miller指数对表面分类
  3. 【软件工程】— 文档总结
  4. android之电源锁
  5. 证件照怎么制作?分享几种证件照生成器
  6. 软件工程要学计算机网络吗,计算机网络与软件工程专业学习心得.docx
  7. java.lang.IllegalStateException: commit already called
  8. 机你太美 | 华为vs三星折叠屏大战,结果王自如赢了?!
  9. 文件名批量转换为拼音名
  10. python不运行一段代码_Python:当满足某个条件而不使用“if”语句时跳过一段代码(计算)...