详解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基础知识点汇总
May 26 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
MYSQL如何查看进程和kill进程
Mar 13 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
mysql序号rownum行号实现方式
Dec 24 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与javascript之间的交互
2017/08/31 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Python遍历字典方式就实例详解
2019/12/28 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
银行实习自我鉴定
2013/10/12 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL