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);
    

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

    内连接

    内连接文氏图

    表的内连接

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

    • 执行的sql语句
    select * from tbl_dept a inner join tbl_emp b on a.id=b.deptId;
    • 查询结果 
      这里写图片描述

    左外连接

    左外连接文氏图

    左连接

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

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

    右外连接

    右外连接文氏图

    这里写图片描述

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

    • 执行的sql语句
    select * from tbl_dept a right join tbl_emp b on a.id=b.deptId;
    • 查询结果 
      这里写图片描述

    左连接

    左连接文氏图

    这里写图片描述

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

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

    这里写图片描述

    右连接

    右连接文氏图

    右连接

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

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

    右连接

    全连接

    全连接文氏图

    这里写图片描述

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

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

    文氏图

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

    这里写图片描述

  • 相关阅读:
    RabbitMQ学习之spring-amqp的重要类的认识
    RabbitMQ学习之ConntectionFactory与Conntection的认知
    (转) RabbitMQ学习之远程过程调用(RPC)(java)
    (转) RabbitMQ学习之延时队列
    (转)RabbitMQ学习之消息可靠性及特性
    (转)RabbitMQ学习之exchange总结
    (转)RabbitMQ学习之Headers交换类型(java)
    心得体悟帖---200223(你决定玩游戏的那一刻开始,你就要做好花费大几个小时的准备)
    范仁义css3课程---44、弹性盒子(flex)实例
    心得体悟帖---200223(视频变短,于录课于观众都是好事)
  • 原文地址:https://www.cnblogs.com/dinglinyong/p/6656315.html
Copyright © 2011-2022 走看看