详解MySQL的内连接和外连接


Posted in MySQL onMay 08, 2023

MySQL 中的内连接、左外连接和右外连接是用于连接两个或多个表的不同方式,它们之间的区别如下:

内连接(Inner Join)

内连接也称为等值连接,只返回两个表中键值匹配的行,即只有在两个表中都有匹配的数据时才会返回。内连接的语法如下:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

左外连接(Left Join)

左连接返回左表中所有记录和右表中匹配的记录,如果右表中没有匹配的记录,则返回 NULL 值。左连接的语法如下:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

右外连接(Right Join)

右连接返回右表中所有记录和左表中匹配的记录,如果左表中没有匹配的记录,则返回 NULL 值。右连接的语法如下:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

以上三种连接方式都是基于相同的基础,只是返回的结果不同。需要根据实际需求选择不同的连接方式来处理数据。

案例:

假设有两个表A和B:

表A:

id name
1 Alice
2 Bob
3 Carol

表B:

id score
1 90
2 80
3 70

内连接查询A和B表中相同id的数据:

sqlCopy code
SELECT A.id, A.name, B.score 
FROM A 
INNER JOIN B 
ON A.id = B.id;

结果:

id name score
1 Alice 90
2 Bob 80

左连接查询A和B表中所有的数据,如果B表中没有与A表相同的id,则B表的score为NULL

sqlCopy code
SELECT A.id, A.name, B.score 
FROM A 
LEFT JOIN B 
ON A.id = B.id;

结果:

id name score
1 Alice 90
2 Bob 80
3 Carol NULL

右连接和左连接相似,只是将A表和B表调换位置,查询B表和A表的数据。

到此这篇关于详解MySQL的内连接和外连接的文章就介绍到这了,更多相关MySQL内连接外连接内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
多属性、多分类MySQL模式设计
Apr 05 MySQL
MySQL表的增删改查基础教程
Apr 07 MySQL
MySQL 可扩展设计的基本原则
May 14 MySQL
新手入门Mysql--概念
Jun 18 MySQL
MySQL系列之七 MySQL存储引擎
Jul 02 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
MySQL子查询中order by不生效问题的解决方法
Aug 02 MySQL
MySQL多表查询机制
Mar 17 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
MySQL8.0 Undo Tablespace管理详解
Jun 16 MySQL
关于MySQL中explain工具的使用
May 08 #MySQL
postgresql如何找到表中重复数据的行并删除
May 08 #MySQL
SQL Server数据库的三种创建方法汇总
May 08 #MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 #MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
Dec 24 #MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
Dec 24 #MySQL
MySQL数据管理操作示例讲解
Dec 24 #MySQL
You might like
用Php实现链结人气统计
2006/10/09 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
基于jquery的滑动样例代码
2010/11/20 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python实现Const详解
2015/01/27 Python
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
人事部经理岗位职责
2014/03/07 职场文书
党支部换届选举方案
2014/05/08 职场文书
药品营销策划方案
2014/06/15 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers