详解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 07 MySQL
MySQL数据迁移相关总结
Apr 29 MySQL
MySQL sql_mode修改不生效的原因及解决
May 07 MySQL
MySQL 重写查询语句的三种策略
May 10 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
详解MySQL中的主键与事务
May 27 MySQL
Mysql文件存储图文详解
Jun 01 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MYSQL中文乱码问题的解决方案
Jun 14 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
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
js url传值中文乱码之解决之道
2009/11/20 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python爬取指定微信公众号文章
2018/12/20 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
python3实现简单飞机大战
2020/11/29 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
《小猫刮胡子》教学反思
2014/02/21 职场文书
《三峡》教学反思
2014/03/01 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
《大海那边》教学反思
2014/04/09 职场文书
计生工作先进事迹
2014/08/15 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
授权收款委托书范本
2014/10/10 职场文书
起诉状范本
2015/05/20 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
小学生读书笔记
2015/07/01 职场文书
环保建议书作文500字
2015/09/14 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis