史上最全 MySQL JOIN 查询

本文详细介绍SQL中的各种连接类型,包括内连接、左外连接、右外连接、全连接等,并通过具体的SQL语句和查询结果进行说明。同时,提供创建关联表的SQL脚本和数据插入示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

	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语句

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

查询结果
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值