[关闭]
@boothsun 2018-02-18T18:03:42.000000Z 字数 1869 阅读 1265

MySQL的七种join

MySQL


建表

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

  1. CREATE DATABASE db0206;
  2. USE db0206;
  3. CREATE TABLE `db0206`.`tbl_dept`(
  4. `id` INT(11) NOT NULL AUTO_INCREMENT,
  5. `deptName` VARCHAR(30),
  6. `locAdd` VARCHAR(40),
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=INNODB CHARSET=utf8;
  9. CREATE TABLE `db0206`.`tbl_emp`(
  10. `id` INT(11) NOT NULL AUTO_INCREMENT,
  11. `name` VARCHAR(20),
  12. `deptId` INT(11),
  13. PRIMARY KEY (`id`),
  14. FOREIGN KEY (`deptId`) REFERENCES `db0206`.`tb_dept`(`id`)
  15. ) ENGINE=INNODB CHARSET=utf8;
  16. /*插入数据*/
  17. INSERT INTO tbl_dept(deptName,locAdd) VALUES('RD',11);
  18. INSERT INTO tbl_dept(deptName,locAdd) VALUES('HR',12);
  19. INSERT INTO tbl_dept(deptName,locAdd) VALUES('MK',13);
  20. INSERT INTO tbl_dept(deptName,locAdd) VALUES('MIS',14);
  21. INSERT INTO tbl_dept(deptName,locAdd) VALUES('FD',15);
  22. INSERT INTO tbl_emp(NAME,deptId) VALUES('z3',1);
  23. INSERT INTO tbl_emp(NAME,deptId) VALUES('z4',1);
  24. INSERT INTO tbl_emp(NAME,deptId) VALUES('z5',1);
  25. INSERT INTO tbl_emp(NAME,deptId) VALUES('w5',2);
  26. INSERT INTO tbl_emp(NAME,deptId) VALUES('w6',2);
  27. INSERT INTO tbl_emp(NAME,deptId) VALUES('s7',3);
  28. INSERT INTO tbl_emp(NAME,deptId) VALUES('s8',4);

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

1. 内连接

内连接Venn图

内连接Venn图

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

2. 左外连接

左外连接文氏图:

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

  1. select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;

3. 右外连接

右外连接Venn图:

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

  1. select * from tbl_dept a right join tbl_emp b on a.id=b.deptId

4. 左连接

左连接Venn图:

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

  1. select * from tbl_dept a left join tbl_emp b on a.id=b.deptId where b.deptId is null;

5. 右连接

右连接文氏图

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

  1. select * from tbl_dept a right join tbl_emp b on a.id=b.deptId where a.id is null;

6. 全连接

全连接文氏图:

执行的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;

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

文氏图:

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

  1. 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;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注