掘金作者:haifeisi

  文章出处: MySQL 的七种 join

  Learn  [已经过测试校验]

    一、内连接

    二、左外连接

    三、右外连接

    四、左连接

    五、右连接

    六、全连接

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

 

准备工作

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

  1. CREATE DATABASE db0206;
  2. USE db0206;
  3.  
  4. CREATE TABLE `db0206`.`tbl_dept`(
  5. `id` INT(11) NOT NULL AUTO_INCREMENT,
  6. `deptName` VARCHAR(30),
  7. `locAdd` VARCHAR(40),
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=INNODB CHARSET=utf8;
  10.  
  11. CREATE TABLE `db0206`.`tbl_emp`(
  12. `id` INT(11) NOT NULL AUTO_INCREMENT,
  13. `name` VARCHAR(20),
  14. `deptId` INT(11),
  15. PRIMARY KEY (`id`),
  16. FOREIGN KEY (`deptId`) REFERENCES `db0206`.`tbl_dept`(`id`)
  17. ) ENGINE=INNODB CHARSET=utf8;

  插入数据

  1. /*插入数据*/
  2. INSERT INTO tbl_dept(deptName,locAdd) VALUES('RD',11);
  3. INSERT INTO tbl_dept(deptName,locAdd) VALUES('HR',12);
  4. INSERT INTO tbl_dept(deptName,locAdd) VALUES('MK',13);
  5. INSERT INTO tbl_dept(deptName,locAdd) VALUES('MIS',14);
  6. INSERT INTO tbl_dept(deptName,locAdd) VALUES('FD',15);
  7.  
  8. INSERT INTO tbl_emp(NAME,deptId) VALUES('z3',1);
  9. INSERT INTO tbl_emp(NAME,deptId) VALUES('z4',1);
  10. INSERT INTO tbl_emp(NAME,deptId) VALUES('z5',1);
  11.  
  12. INSERT INTO tbl_emp(NAME,deptId) VALUES('w5',2);
  13. INSERT INTO tbl_emp(NAME,deptId) VALUES('w6',2);
  14.  
  15. INSERT INTO tbl_emp(NAME,deptId) VALUES('s7',3);
  16.  
  17. INSERT INTO tbl_emp(NAME,deptId) VALUES('s8',4);

  'tbl_dept'表和'tbl_emp'表

          

一、内连接

  内连接文氏图

  

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

  

二、左外连接

  左外连接文氏图

  

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

  

三、右外连接

  右外连接文氏图

  

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

   

 四、左连接

  左连接文氏图

  

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

  

五、右连接

  右连接文氏图

  

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

 六、全连接

  全连接文氏图

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

  

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

  文氏图

  

  • 执行的sql语句以及执行的查询结果
  1. select * from tbl_dept a right join tbl_emp b on a.id=b.deptId
  2. union
  3. 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. 服务端相关知识学习(一)之什么是zookeeper

    什么是zookeeper zookeeper是分布式协调服务,可以在分布式系统中共享配置.协调锁资源.提供命名服务那分布式协调服务又是个什么东西呢?首先我们来看“协调”是什么意思.在一个并发的环境里, ...

  2. Unknown column '字段名' in 'field list' 错误解决方案

    当后台报这个错误的时候,说明实体类中的字段名出错了,解决方案: 1,检查数据库中的字段名与实体类中的字段名是否一致,特别要注意单词字母, 2,检查数据库中的字段是否与实体类中的字段一致.比如数据库中没 ...

  3. 深入理解hadoop数据倾斜

    深入理解hadoop之数据倾斜 1.什么是数据倾斜 我们在用map /reduce程序执行时,有时候会发现reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理 ...

  4. requests 抓取网站

    import requests from requests.exceptions import RequestException import re import json def get_one_p ...

  5. https://bbs.ichunqiu.com/thread-48915-1-1.html

    使用BurpSuite进行双文件上传拿Webshell 首先进入网站后台:(后台界面应该是良精CMS) <ignore_js_op> 在 添加产品 这一栏有个上传文件: <ignor ...

  6. Python3简易接口自动化测试框架设计与实现(上)

    目录 1.开发环境 2.用到的模块 3.框架设计 3.1.流程 3.2.项目结构 5.日志打印 6.接口请求类封装 接口开发请参考:使用Django开发简单接口:文章增删改查 1.开发环境 操作系统: ...

  7. Oracle笔记(四) 简单查询、限定查询、数据的排序

    一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统.ANSI(美国国家标准学会) ...

  8. 逆向破解H.Koenig 遥控器 Part 2

    逆向破解H.Koenig 遥控器 Part 2 到目前为止,我们已经知道了RF收发器的安装过程,下面是我们所掌握的东西 : l 无线电收发器是一个Avantcom A7105 l 调制是FSK l 频 ...

  9. NFS +inotify+rsync 实现数据的远程挂载与实时增量备份

    NFS 网络文件系统 功能: 用户可以像访问自己的本地文件系统一样使用网络中的远端系统上的文件 原理: 用户进程-->RPC服务(portman)-->tcp/ip协议栈-->远端主 ...

  10. Boost::pool (1)

    POOL 什么是pool 池分配是一种非常快速的内存分配方案,但其使用受到限制.有关池分配的更多信息(也称为简单隔离存储,请参阅 池化概念和简单隔离存储). 我为什么要使用Pool? 使用池可以更好地 ...