zoukankan      html  css  js  c++  java
  • MySQL的七种join

    转载 原文地址

    建表

    在这里我们先建立两张有外键关联的两张表:

    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`.`tb_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);
    

    Venn图与SQL语句的编写以及查询结果

    1. 内连接

    内连接Venn图

    内连接Venn图

    执行的SQL语句以及执行的查询结果:

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

    2. 左外连接

    左外连接文氏图:

    执行的sql语句以及执行的查询结果:

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

    3. 右外连接

    右外连接Venn图:

    执行的sql语句以及执行的查询结果

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

    4. 左连接

    左连接Venn图:

    执行的SQL语句以及执行的查询结果

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

    5. 右连接

    右连接文氏图

    执行的sql语句以及执行的查询结果:

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

    6. 全连接

    全连接文氏图:

    执行的sql语句以及执行的查询结果:

    • 执行的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;
    
    • 查询结果

    7. 两张表中都没有出现的数据集

    文氏图:

    执行的sql语句以及执行的查询结果:

    • 执行的sql语句
    select * from tbl_dept a right join tbl_emp b on a.id=b.deptId where a.id is null union select * from tbl_dept a left join tbl_emp b on a.id=b.deptId where b.deptId is null;
    
    • 查询结果
  • 相关阅读:
    一道亲戚的生物学改题
    【水】强化16题解
    【我为标程写注释】最大值最小化
    【我为标程写注释】卢斯进制
    oracle 解锁表
    Oracle存储过程根据指定日期返回(N个)工作日的时间
    NPOI_2.1.3_学习记录(6)-Excel中设置小数、百分比、货币、日期、科学计数法和金额大写
    NPOI_2.1.3_学习记录(5)-创建Excel的页眉页脚
    NPOI_2.1.3_学习记录(4)-Excel中单元格的复制
    NPOI_2.1.3_学习记录(2)-在Excel中创建工作表(Sheet)
  • 原文地址:https://www.cnblogs.com/boothsun/p/7792341.html
Copyright © 2011-2022 走看看