详解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 相关文章推荐
Idea连接MySQL数据库出现中文乱码的问题
Apr 14 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
安装配置mysql及Navicat prenium的详细流程
Jun 10 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 MySQL
MySQL 数据表操作
May 04 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
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教程 基本语法
2009/10/23 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python自动翻译实现方法
2016/05/28 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
python中def是做什么的
2020/06/10 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
保护地球的标语
2014/06/17 职场文书
数学教育专业求职信
2014/07/22 职场文书
机关保密工作承诺书
2015/05/04 职场文书
六一活动主持词
2015/06/30 职场文书