详解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 06 MySQL
MySQL infobright的安装步骤
Apr 07 MySQL
详解MySQL的半同步
Apr 22 MySQL
MySQL InnoDB ReplicaSet(副本集)简单介绍
Apr 24 MySQL
一文读懂navicat for mysql基础知识
May 31 MySQL
Navicat连接MySQL错误描述分析
Jun 02 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
MySQL中一条SQL查询语句是如何执行的
Apr 08 MySQL
mysql幻读详解实例以及解决办法
Jun 16 MySQL
mysql sql常用语句大全
Jun 21 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 MySQL
MySQL中dd::columns表结构转table过程及应用详解
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学习之PHP变量
2006/10/09 PHP
NO3第三帝国留言簿制作过程
2006/10/09 PHP
用PHP查询域名状态whois的类
2006/11/25 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
浅谈Python接口对json串的处理方法
2018/12/19 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python文件选择对话框的操作方法
2019/06/27 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
Python如何给你的程序做性能测试
2020/07/29 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
英语专业个人求职信范文
2014/02/01 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
PyQt5实现多张图片显示并滚动
2021/06/11 Python
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS