美文网首页
转!mysql中的7种联表join

转!mysql中的7种联表join

作者: caae | 来源:发表于2018-09-01 13:01 被阅读0次

建表

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

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

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

内连接

内连接文氏图

image.png

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

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


    image.png

左外连接

左外连接文氏图

左连接

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


    全连接

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

文氏图

image

执行的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;
  • 查询结果
这里写图片描述

原文链接:
https://www.cnblogs.com/dinglinyong/p/6656315.html

相关文章

  • mysql

    mysql中left join,right join,inner join的区别 A表 B表 left join ...

  • 转!mysql中的7种联表join

    建表 在这里呢我们先来建立两张有外键关联的张表。 文氏图与SQL语句的编写以及查询结果 内连接 内连接文氏图 执行...

  • 索引相关优化(二)

    1、Join语句的优化 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)神奇的 SQL 之...

  • MySQL update使用select的结果

    1. MySQL UPDATE JOIN语法 在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表...

  • mysql 联表查询

    mysql 联表查询 JOIN 对比 思路: 1.分析需求,分析查询的字段来自哪些表(连接查询) 2.确定使用哪...

  • MySQL中3表join流程分析

    常听说MySQL中3表 join 的执行流程并不是前两张表 join 得出结果,再与第三张表进行 join;而是3...

  • MySQL记录

    1. Join的使用 MySQL 的 JOIN 在两个或多个表中查询数据,Join包括三种: Inner Join...

  • Mybatis关联查询

    1. mysql中的LEFT JOIN 使用left join是以左表为主,即使右表没有数据,也会出来左表的所有数...

  • MySQL 深入浅出:join 的使用和原理

    1. 使用 join 是 MySQL 用来进行联表操作的,用来匹配两个表的数据,筛选并合并出符合我们要求的结果集。...

  • mysql进阶操作join篇(三)

    本文主要介绍mysql中常用join和in,exists 的转化 mysql 版本: 建表 left join r...

网友评论

      本文标题:转!mysql中的7种联表join

      本文链接:https://www.haomeiwen.com/subject/ictuwftx.html