掘金作者:haifeisi

  文章出处: MySQL 的七种 join

  Learn  [已经过测试校验]

    一、内连接

    二、左外连接

    三、右外连接

    四、左连接

    五、右连接

    六、全连接

    七、两张表中都没有出现的数据集

 

准备工作

  创建数据库表'tbl_dept'和'tbl_emp'

CREATE DATABASE db0206;
USE db0206; CREATE TABLE `db0206`.`tbl_dept`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`deptName` VARCHAR(30),
`locAdd` VARCHAR(40),
PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8; CREATE TABLE `db0206`.`tbl_emp`(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20),
`deptId` INT(11),
PRIMARY KEY (`id`),
FOREIGN KEY (`deptId`) REFERENCES `db0206`.`tbl_dept`(`id`)
) ENGINE=INNODB 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);

  'tbl_dept'表和'tbl_emp'表

          

一、内连接

  内连接文氏图

  

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a inner join tbl_emp b on a.id=b.deptId;

  

二、左外连接

  左外连接文氏图

  

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;

  

三、右外连接

  右外连接文氏图

  

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId;

   

 四、左连接

  左连接文氏图

  

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a left join tbl_emp b on a.id=b.deptId where b.deptId is null;

  

五、右连接

  右连接文氏图

  

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId where a.id is null;

 六、全连接

  全连接文氏图

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId
union
select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;

  

七、两张表中都没有出现的数据集

  文氏图

  

  • 执行的sql语句以及执行的查询结果
select * from tbl_dept a right join tbl_emp b on a.id=b.deptId
union
select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;

  

【知识库】-数据库_MySQL 的七种 join的更多相关文章

  1. MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解

    逻辑架构   存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序  考点:m ...

  2. 数据库常见的三种join方式

    数据库常见的join方式有三种:inner join, left outter join, right outter join(还有一种full join,因不常用,本文不讨论).这三种连接方式都是将 ...

  3. 1. 七种join的sql编写

    一.join图 二.sql演示 a.创建演示表及数据 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ----------------------- ...

  4. 七种join的书写规范

    在mysql中的两表进行连接时,总共有7种连接情况,具体可见下图 由图的从左到右的顺序 图1.左连接(left join):返回左表中的所有记录和右表中的连接字符字段相等的记录,若右表没有匹配值则补N ...

  5. Mysql七种 JOIN 连接

    内连接 SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key 左外连接 SELECT <se ...

  6. MySQL的七种join

    转载 原文地址 建表 在这里我们先建立两张有外键关联的两张表: CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept` ...

  7. MySQL 的七种 join

    建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...

  8. MySQL七种join理论

    1. 内连接 select * from A inner join B where A.key=B.key; 2. 左连接 select * from A left join B on A.key=B ...

  9. MYSQL 的七种join

    建表 在这里呢我们先来建立两张有外键关联的张表. CREATE DATABASE db0206; USE db0206; CREATE TABLE `db0206`.`tbl_dept`( `id` ...

随机推荐

  1. C#面向对象19 值传递和引用传递

    值类型:int double char decimal bool enum struct引用类型:string 数组 自定义类 集合 object 接口 **值传递和引用传递1.值类型在复制的时候,传 ...

  2. c++ 性能优化策略

    c++ 性能优化策略 作者:D_Guco 来源:CSDN 原文:https://blog.csdn.net/D_Guco/article/details/75729259 1 关于继承:不可否认良好的 ...

  3. webpack的postcss的基本应用

    PostCss是什么? PostCSS在webpack中的基本应用 一.PostCss是什么? 如果有深入学习PostCss需求的话可以参考大漠的资料:https://www.w3cplus.com/ ...

  4. SmartBinding与kbmMW#2

    前言 在之前的文章中,我介绍了SmartBinding作为Delphi的一个新的易于使用和智能的绑定框架.介绍了包括绑定对象,列表,常规数据和可视控件,以及如何使用导航器,所有这些都用代码做了演示. ...

  5. 华硕B360主板装机找不到固态硬盘启动

      1.开机点按F2进入BIOS中,在security选项卡中选择secure boot menu,secure boot control按Enter选择Disable,按F10保存:   2.电脑重 ...

  6. html标签被div嵌套页面字体变大的解决办法

    html标签被div嵌套页面字体变大的解决办法 <div> <html> <head> <title></title> </head& ...

  7. POJ 1741 单次询问树上距离<=K的点对数 点分治

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ; ], ...

  8. Linux命令手册man

    命令手册:manualman COMMANDman 2 read whatis COMMAND:查看命令有几个章节 man分章节:常见章节有8个,1:用户命令2:系统调用3:库用户4:特殊文件(设备文 ...

  9. C语言1-2019秋第一周作业

    第一周作业 1.你对软件工程专业或者计算机科学与技术专业了解是怎样? 软件技术专业是计算机科学的一个分支,和软件科学与技术专业相比较,软件技术专业的侧重点在开发和技术的实际应用,而对软件开发的理论要求 ...

  10. Python3之Requests模块详解

    # 导入 Request模块 # 若本机无自带Request模块,可自行下载或者使用pip进行安装 # python版本Python3 import requests import json #### ...