详解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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL的join buffer原理
Apr 29 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
MySQL 查询速度慢的原因
May 25 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
MySQL如何使备份得数据保持一致
May 02 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
Mysql如何查看是否使用到索引
Dec 24 MySQL
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
May 08 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你的验证码安全码?
2007/01/02 PHP
php IP及IP段进行访问限制的代码
2008/12/17 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
Preload基础使用方法详解
2020/02/03 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python实现的批量下载RFC文档
2015/03/10 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
对python函数签名的方法详解
2019/01/22 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Django 拆分model和view的实现方法
2019/08/16 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
选调生挂职锻炼工作总结
2015/10/23 职场文书
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android