MySQL中JOIN怎么用
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,小编给大家分享一下MySQL中JOIN怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简介A的独有+AB的公有B的独有
千家信息网最后更新 2024年12月12日MySQL中JOIN怎么用
小编给大家分享一下MySQL中JOIN怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
简介
A的独有+AB的公有
B的独有+AB的公有
AB的公有
A的独有
B的独有
A的独有+B的独有+AB的公有
A的独有+B的独有
练习
建表
部门表
DROP TABLE IF EXISTS `dept`;CREATE TABLE `dept` ( `dept_id` int(11) NOT NULL AUTO_INCREMENT, `dept_name` varchar(30) DEFAULT NULL, `dept_number` int(11) DEFAULT NULL, PRIMARY KEY (`dept_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO `dept` VALUES ('1', 'AA', '100');INSERT INTO `dept` VALUES ('2', 'BB', '200');INSERT INTO `dept` VALUES ('3', 'CC', '300');INSERT INTO `dept` VALUES ('4', 'DD', '400');INSERT INTO `dept` VALUES ('5', 'HH', '500');
员工表
DROP TABLE IF EXISTS `emp`;CREATE TABLE `emp` ( `emp_id` int(11) NOT NULL AUTO_INCREMENT, `emp_name` varchar(30) DEFAULT NULL, `emp_age` int(11) DEFAULT NULL, `dept_id` int(11) NOT NULL, PRIMARY KEY (`emp_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO `emp` VALUES('1', 'zhangsan', '20', '1');INSERT INTO `emp` VALUES('2', 'lisi', '25', '6');INSERT INTO `emp` VALUES('3', 'wangwu', '19', '4');INSERT INTO `emp` VALUES('4', 'zhaoliu', '29', '5');INSERT INTO `emp` VALUES('5', 'xiaohong', '30', '2');INSERT INTO `emp` VALUES('6', 'xiaohu', '26', '3');INSERT INTO `emp` VALUES('7', 'zhangle', '23', '3');INSERT INTO `emp` VALUES('8', 'qingtian', '38', '3');INSERT INTO `emp` VALUES('9', 'xiayutian', '36', '2');INSERT INTO `emp` VALUES('10', 'fangjia', '40', '1');
情景分析
1.左连接(left join)
A的独有+AB的公有
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id;
2.右连接(right join)
B的独有+AB的公有
SELECT * from emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id;
3.内连接(inner join)
AB的公有
SELECT * from emp e INNER JOIN dept d ON e.dept_id=d.dept_id;
4.左外连接(left join且右表=null)
A的独有
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id WHERE d.dept_id is null;
5. 右外连接(right join且左表=null)
B的独有
SELECT * from emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id WHERE e.dept_id is null;
6. 全连接(full outer join)
A的独有+B的独有+AB的公有
注意:MySQL不支持FULL OUTER JOIN(在ORACLE支持)。
因此使用UNION的方式来实现,可以**合并+去重**
应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时
特点:
1、要求多条查询语句的查询列数是一致的
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字**默认去重,如果使用union all 可以包含重复项**
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id UNION SELECT * FROM emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id;
7. 全外连接(full outer join且左右表=null)
A的独有+B的独有
SELECT * from emp e LEFT JOIN dept d ON e.dept_id=d.dept_id WHERE d.dept_id is null UNION SELECT * FROM emp e RIGHT JOIN dept d ON e.dept_id=d.dept_id WHERE e.dept_id is null;
以上是"MySQL中JOIN怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
查询
一致
篇文章
内容
多个
多条
语句
支持
不怎么
信息
全连
关键
关键字
员工
场景
大部分
情景
方式
更多
最好
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中华人民共和国的网络安全法内容
软件开发要多少圈
协议软件开发待遇
上不去网提示dns服务器错误
征信数据库应用的开发
香港云服务器怎么更安全
web数据库怎么安装文件
网络安全中心图
安卓qq自动加好友软件开发
网络安全对国家的隐患
服务器硬盘提示报警
网络安全抄报说话
剑网三人最多的服务器2022
h1z1选哪个服务器
教育软件开发的需求分析
数据库select可视化
从事网络安全工作的经验
16598810服务器
软件开发文档岗位
web服务器 集群
计算机网络技术的专业课
公众号下访问数据库
热血江湖与服务器断开1115
福建综合软件开发销售价格
网络技术批发价格
服务器硬盘提示报警
qq登录失败服务器连接超时
显示数据库读者信息
现在的服务器性能
未来网络技术与产业