【详解】MySQL JOINS大总结
2021/12/1 19:09:30
本文主要是介绍【详解】MySQL JOINS大总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
以下图结合例子,自己敲一遍。
SQL语句的JOIN连接在开发中非常常用。
先看下面这张图,包括了内连接inner join,左连接left join,右连接 right join等。
以下两个表为例子,一个是tbl_emp,一个是tbl_dept。
CREATE TABLE `tbl_emp`( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `deptId` int(11) DEFAULT NULL, PRIMARY KEY(`id`), KEY `fk_dept_id`(`deptId`) )ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET=UTF8; CREATE TABLE `tbl_dept`( `id` int(11) NOT NULL AUTO_INCREMENT, `deptName` varchar(30) DEFAULT NULL, `locAdd` VARCHAR(40) DEFAULT NULL, PRIMARY KEY(`id`) )ENGINE = INNODB AUTO_INCREMENT= 1 DEFAULT 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); insert into tbl_emp(NAME,deptId) values('s9',51);
①内连接 inner join:查询出两表之间公共的数据部分
SELECT * from tbl_emp e INNER JOIN tbl_dept d ON e.deptId = d.id;
②左连接left join:以左表为中心,查出左表所有的数据,右表中查询出符合条件的数据
SELECT * from tbl_emp e left JOIN tbl_dept d ON e.deptId = d.id;
③右连接right join:以右表为中心,查询出右表所有的数据,左表中查询出符合条件的数据
SELECT * from tbl_emp e RIGHT JOIN tbl_dept d ON e.deptId = d.id;
④ 左连接left join :
SELECT * from tbl_emp e left JOIN tbl_dept d ON e.deptId = d.id WHERE d.id is NULL;
⑤右连接right join:查询出右表的独有部分。
SELECT * FROM tbl_emp e RIGHT JOIN tbl_dept d ON e.deptId = d.id WHERE e.id is NULL;
⑥全查询 union:查询出左表、右表的全部部分包括公共部分的去重。
# 两表的左查询 (SELECT * FROM tbl_emp e LEFT JOIN tbl_dept d ON e.deptId = d.id) UNION # 两表的右查询 (SELECT * FROM tbl_emp e RIGHT JOIN tbl_dept d ON e.deptId = d.id);
⑦差查询 union:查询出左表独有的部分、右表独有的部分。
SELECT * FROM tbl_emp e LEFT JOIN tbl_dept d ON e.deptId = d.id WHERE d.id is null UNION SELECT * FROM tbl_emp e RIGHT JOIN tbl_dept d ON e.deptId = d.id WHERE e.deptId is NULL
这篇关于【详解】MySQL JOINS大总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南