MYSQL的内连接和外连接的区别

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MYSQL的内连接和外连接的区别

MySQL中,内连接(Inner Join)和外连接(Outer Join)是用于联接多个表的操作。它们的区别如下:

MySQL中连接(Join)操作用于将两个或多个表中的数据进行关联。内连接和外连接是两种常见的连接方式。

内连接(INNER JOIN)是连接操作的默认方式。它通过匹配两个表中的数据,只返回满足连接条件的记录。内连接只保留两个表中匹配的行,并将它们合并成一行。内连接返回两个表之间匹配的行,并且只有当连接条件满足时才返回结果。内连接使用JOIN关键字或直接使用逗号(,)来表示。内连接只会返回连接字段在两个表中都存在的记录。

内连接的语法示例:

SELECT列名FROM1INNERJOIN2ON连接条件;

SELECT列名FROM1, 2WHERE连接条件;

 

外连接(OUTER JOIN)是在内连接的基础上扩展的一种连接方式。外连接返回两个表之间匹配的行,以及未匹配的行。外连接可以分为左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。

  • 左外连接:左外连接返回左表中所有的记录和右表中匹配的记录。如果右表中没有匹配的记录,对应的字段将显示为NULL

左外连接的语法示例:

SELECT列名FROM1LEFTJOIN2ON连接条件;

SELECT列名FROM1LEFTOUTERJOIN2ON连接条件;

  • 右外连接:右外连接返回右表中所有的记录和左表中匹配的记录。如果左表中没有匹配的记录,对应的字段将显示为NULL

·        右外连接的语法示例:

SELECT列名FROM1RIGHTJOIN2ON连接条件;

SELECT列名FROM1RIGHTOUTERJOIN2ON连接条件;

  • 全外连接:全外连接返回左表和右表中的所有记录,并在没有匹配的记录处使用NULL填充。

简而言之,内连接只返回两个表中匹配的记录,而外连接会返回匹配和不匹配的记录。

举个例子来说明:

假设有两个表,一个是学生表(students),包含学生的学号和姓名;另一个是成绩表(scores),包含学生的学号和成绩。

内连接操作:
SELECT students.
学号, students.姓名, scores.成绩
FROM students
INNER JOIN scores ON students.
学号 = scores.学号;

这个查询将返回匹配的学生学号、姓名和成绩。

左外连接操作:
SELECT students.
学号, students.姓名, scores.成绩
FROM students
LEFT JOIN scores ON students.
学号 = scores.学号;

这个查询将返回所有学生的学号、姓名和成绩,如果某个学生没有成绩记录,则成绩字段显示为NULL

右外连接操作和全外连接操作类似,只是连接的方向和返回的结果不同。

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
3
分享
相关文章
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL的存储引擎是其核心组件之一,负责数据的存储、索引和检索。不同的存储引擎具有不同的功能和特性,可以根据业务需求 选择合适的引擎。本文详细介绍了MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案。
1271 57
【MySQL进阶篇】存储引擎(MySQL体系结构、InnoDB、MyISAM、Memory区别及特点、存储引擎的选择方案)
MySQL 和 Oracle 的区别?
本文对比了Oracle和MySQL数据库的多个方面。Oracle适用于大型数据库,支持高并发和大访问量,市场占有率为40%,安装占用空间较大,约3G;而MySQL适合中小型应用,是开源免费的,安装仅需152M。两者在主键生成、字符串处理、SQL语句、事务处理等方面存在差异。Oracle功能更为强大,尤其在企业级应用中表现突出,而MySQL则以简单易用见长。
530 7
MySQL 和 Oracle 的区别?
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
254 25
MYSQL支持的存储引擎有哪些, 有什么区别
MYSQL存储引擎有很多, 常用的就二种 : MyISAM和InnerDB , 者两种存储引擎的区别 ; ● MyISAM支持256TB的数据存储 , InnerDB只支持64TB的数据存储 ● MyISAM 不支持事务 , InnerDB支持事务 ● MyISAM 不支持外键 , InnerDB支持外键
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
389 0
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
241 1
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!

推荐镜像

更多
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问