详解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 05 MySQL
MySQL之高可用集群部署及故障切换实现
Apr 22 MySQL
MySql开发之自动同步表结构
May 28 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
MySQL学习之基础命令实操总结
Mar 19 MySQL
mysql数据插入覆盖和时间戳的问题及解决
Mar 25 MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 MySQL
数据设计之权限的实现
Aug 05 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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP中Array相关函数简介
2016/07/03 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue组件的写法汇总
2018/04/12 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
vue实现放大镜效果
2020/09/17 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
Python正则表达式介绍
2012/08/06 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
全面分析Python的优点和缺点
2018/02/07 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
PyQt实现计数器的方法示例
2021/01/18 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
食堂个人先进事迹
2014/01/22 职场文书
学校党员干部承诺书
2015/05/04 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers