@boothsun
2018-02-18T10:03:42.000000Z
字数 1869
阅读 1432
MySQL
在这里我们先建立两张有外键关联的两张表:
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语句以及执行的查询结果:

左外连接文氏图:

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

右外连接Venn图:

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

左连接Venn图:

执行的SQL语句以及执行的查询结果
select * 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语句以及执行的查询结果:
select * from tbl_dept a right join tbl_emp b on a.id=b.deptIdunionselect * from tbl_dept a left join tbl_emp b on a.id=b.deptId;

文氏图:

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