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

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 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

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

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
关系型数据库 MySQL Linux
Qt连接Mysql出现问题(一):“Driver not loaded Driver not loaded“
第一眼看见这张图我也觉得很奇怪,显示有QMYSQL但是又说没有,这不自相矛盾吗!
|
9天前
|
JSON 关系型数据库 MySQL
MySQL 5.x和8.0区别
性能:8.0的速度要比5.7快2倍,8.0在以下方面带来了更好的性能:读/写负载、IO密集型工作负载、高竞争("hot spot"热点竞争问题)工作负载。
20 3
|
14天前
|
Java 关系型数据库 MySQL
使用MySQL JDBC连接数据库
使用MySQL JDBC连接数据库
|
3天前
|
关系型数据库 MySQL 数据库
MySQL:union all与union区别详解
MySQL:union all与union区别详解
|
10天前
|
Java 关系型数据库 MySQL
使用MySQL JDBC连接数据库
使用MySQL JDBC连接数据库
|
13天前
|
关系型数据库 MySQL 数据安全/隐私保护
Navicat连接mysql8报错解决:1251- Client does not support authentication protocol requested by server
Navicat连接mysql8报错解决:1251- Client does not support authentication protocol requested by server
15 0
|
17天前
|
关系型数据库 MySQL 数据库
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
27 0
|
18天前
|
SQL 关系型数据库 MySQL
技术笔记:python连接mysql数据库
技术笔记:python连接mysql数据库
14 0
|
9天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
7天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
919 6
Mysql 数据库主从复制