详解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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL 数据类型选择原则
May 27 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
详解MySQL多版本并发控制机制(MVCC)源码
Jun 23 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
mysql数据库实现设置字段长度
Jun 10 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 MySQL
MySQL新手入门进阶语句汇总
Sep 23 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和ACCESS写聊天室(五)
2006/10/09 PHP
php 获取可变函数参数的函数
2009/08/26 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
浅析vue.js数组的变异方法
2018/06/30 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
党员年终民主评议的自我评价
2013/11/05 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
追悼会答谢词范文
2015/09/29 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript