作者:haifeisi
文章出处:
创建数据库表'tbl_dept'和'tbl_emp'
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);
'tbl_dept'表和'tbl_emp'表
一、内连接
内连接文氏图
- 执行的sql语句以及执行的查询结果
select * from tbl_dept a inner join tbl_emp b on a.id=b.deptId;
二、左外连接
左外连接文氏图
- 执行的sql语句以及执行的查询结果
select * 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;
四、左连接
左连接文氏图
- 执行的sql语句以及执行的查询结果
select * from tbl_dept a left join tbl_emp b on a.id=b.deptId where b.deptId is null;
五、右连接
右连接文氏图
- 执行的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.deptId union select * 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 union select * from tbl_dept a left join tbl_emp b on a.id=b.deptId;