当前位置: 首页 > news >正文

【mysql】—— 表的内连和外连

在MySQL中,内连(INNER JOIN)外连(OUTER JOIN)是用于联接多个表的操作。接下来,我分别给大家介绍下二者。

目录

(一)内连接

1、什么叫内连接

2、语法格式

 3、案例:显示SMITH的名字和部门名称(来自oracle 9i的经典测试表)

(二)外连接

1、什么叫外连接

2、左外连接

2.1案例演示

3、右外连接

3.1案例演示

4、全外连接

5、练习演示

(三)实战OJ

(四)总结


(一)内连接

1、什么叫内连接

在MySQL中, 内连接 实际上就是利用 where 子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。

2、语法格式

  •  💨 以下是内连接的基本语法:

SELECT 列名
FROM 表1
INNER JOIN 表2 ON 表1.关联列 = 表2.关联列;

内连会返回同时存在于表1和表2中的行,并且仅包括满足关联条件的行。

 3、案例:显示SMITH的名字和部门名称(来自oracle 9i的经典测试表

之前我们通过笛卡尔积可以对其进行操作,今天我们通过内连接的方式来进行有关操作。具体如下:

用前面的写法
select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno and ename='SMITH';
  • 结果展示: 

用标准的内连接写法:
select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno and
ename='SMITH';
  • 结果展示:

【小结】

  • 内连接的关键点是只返回两个表中连接条件满足的行,而不包括任何一个表中没有匹配的行;
  • 如果某行在其中一个表中没有匹配的行,则不会包含在结果中
  • 需要注意的是,内连接并不包括符合条件但值为NULL的行。如果你需要包含这些行,可以使用接下来讲到的外连接

 


(二)外连接

1、什么叫外连接

在MySQL中,外连接是一种用于检索两个或多个表之间的数据的方法,它包括左外连接、右外连接和全外连接

2、左外连接

  1. 左外连返回左表中的所有行,以及右表中与左表满足联接条件的行;
  2. 如果右表中没有匹配的行,则返回 NULL 值。

 💨 语法如下select 字段名 from 表名1 left join 表名2 on 连接条件

2.1案例演示

首先,我先建立两张表以供实现需要。具体如下:
  • 表一:

  • 表二:

需求查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
当左边表和右边表没有匹配时,也会显示左边表的数据:
select * from stu left join exam on stu.id=exam.id;


3、右外连接

  1. 右外连与左外连相反,返回右表中的所有行,以及左表中与右表满足联接条件的行;
  2. 如果左表中没有匹配的行,则返回 NULL 值。

💨 语法如下select 字段名 from 表名1 right join 表名2 on 连接条件

3.1案例演示

需求 :对 stu 表和 exam 表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要 显示出来
select * from stu right join exam on stu.id=exam.id;

4、全外连接

  1. 全外连返回左表和右表中的所有行,并将它们联接在一起;
  2. 如果某个表中没有匹配的行,则返回 NULL 值;
  3. MySQL不直接支持全外连,可以使用UNION操作符来模拟实现。

5、练习演示

需求 :列出部门名称和这些部门的员工信息,同时列出没有员工的部门

现在有这样的场景,一家公司为了业务架构的完整设置了某个部门,但是暂时这个部门还没有人,随着之后公司的发展这个部门才会发挥作用。

  • 方法展示:

 代码展示:

select dname,ename,dept.deptno from dept left join emp on dept.deptno=emp.deptno order by dept.deptno asc;

输出显示: 

 


(三)实战OJ

大家看完上诉可以通过下面这两道题目练练手:

  • 分数排名
  • Exchange Seats

(四)总结

通过内连和外连操作,可以根据表之间的关联条件将数据联接起来,并进行灵活的查询和分析。具体选择哪种联接类型取决于你的需求和数据结构。

相关文章:

【mysql】—— 表的内连和外连

在MySQL中,内连(INNER JOIN)和外连(OUTER JOIN)是用于联接多个表的操作。接下来,我分别给大家介绍下二者。 目录 (一)内连接 1、什么叫内连接 2、语法格式 3、案例:显…...

VSCode远程开发配置

目录 概要远程开发插件安装开始连接SSH无密码登录开发环境配置 概要 现在很多公司都是直接远程到服务器上写代码,使用远程开发,可以在与生产环境相同的环境中开发、测试和部署代码,减少因环境不同而导致的问题。当下VSCode远程开发是支持的比…...

复数值神经网络可能是深度学习的未来

一、说明 复数这种东西,在人的头脑中似乎抽象、似乎复杂,然而,对于计算机来说,一点也不抽象,不复杂,那么,将复数概念推广到神经网络会是什么结果呢?本篇介绍国外的一些同行的尝试实践,请我们注意观察他们的进展。...

【C语言】数据结构——排序二(快排)

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读:数组打印与交换1. 交换排序1.1 基本思想:1.2 冒泡与快排的异同 2. 冒泡排序2.1 基本思想2.2 …...

企业私有云容器化架构

什么是虚拟化: 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM&#x…...

SpringBoot+modbus4j实现ModebusTCP通讯读取数据

场景 Windows上ModbusTCP模拟Master与Slave工具的使用: Windows上ModbusTCP模拟Master与Slave工具的使用-CSDN博客 Modebus TCP Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。 1996年施耐德公司推出基于以太网TCP/IP的Modbus协议&…...

Linux性能优化全景指南

Part1 Linux性能优化 1、性能优化性能指标 高并发和响应快对应着性能优化的两个核心指标:吞吐和延时 应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等 性能问题的本质就是系统资源已经到达瓶颈,但…...

树莓派 ubuntu20.04下 python调讯飞的语音API,语音识别和语音合成

目录 1.环境搭建2.去讯飞官网申请密钥3.语音识别(sst)4.语音合成(tts)5.USB声卡可能报错 1.环境搭建 #环境说明:(尽量在ubuntu下使用, 本次代码均在该环境下实现) sudo apt-get install sox # 安装语音播放软件 pip …...

分布式系统架构设计之分布式系统实践案例和未来展望

分布式系统在过去的几十年里经历了长足的发展,从最初的简单分布式架构到今天的微服务、云原生等先进架构,取得了丰硕的成果。本文将通过实际案例分享分布式系统的架构实践,并展望未来可能的发展方向。 一、实践案例 1、微服务化实践 背景 …...

【办公软件】Excel双坐标轴图表

在工作中整理测试数据,往往需要一个图表展示两个差异较大的指标。比如共有三个数据,其中两个是要进行对比的温度值,另一个指标是两个温度的差值,这个差值可能很小。 举个实际的例子:数据如下所示,NTC检测温…...

彻底理解前端安全面试题(1)—— XSS 攻击,3种XSS攻击详解,建议收藏(含源码)

前言 前端关于网络安全看似高深莫测,其实来来回回就那么点东西,我总结一下就是 3 1 4,3个用字母描述的【分别是 XSS、CSRF、CORS】 一个中间人攻击。当然 CORS 同源策略是为了防止攻击的安全策略,其他的都是网络攻击。除了这…...

UE5.1_AI随机漫游

UE5.1_AI随机漫游 目录 UE5.1_AI随机漫游 AI随机漫游方法 方法1:AI角色蓝图直接写方法...

智慧城市新型基础设施建设综合方案:文件全文52页,附下载

关键词:智慧城市建设方案,智慧城市发展的前景和趋势,智慧城市项目方案,智慧城市管理平台,数字化城市,城市数字化转型 一、智慧城市新基建建设背景 1、城市化进程加速:随着城市化进程的加速&am…...

GitHub Copilot 终极详细介绍

编写代码通常是一项乏味且耗时的任务。现代开发人员一直在寻找新的方法来提高编程的生产力、准确性和效率。 像 GitHub Copilot 这样的自动代码生成工具可以使这成为可能。 GitHub Copilot 到底是什么? GitHub Copilot 于 2021 年 10 月推出,是 GitHub 的…...

LeetCode第63题 - 不同路径 II

题目 解答 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;if (obstacleGrid[0][0] 1) {return 0;}if (obstacleGrid[m - 1][n - 1] 1) {return 0;}int[][] dp new int[m][n];dp…...

python+django网上银行业务综合管理系统vue_bvj8b

本课题主要研究如何用信息化技术改善传统网上银行综合管理行业的经营和管理模式,简化网上银行综合管理的难度,根据管理实际业务需求,调研、分析和编写系统需求文档,设计编写符合银行需要的系统说明书,绘制数据库结构模…...

【软件工程】走进瀑布模型:传统软件开发的经典之路

🍎个人博客:个人主页 🏆个人专栏: 软件工程 ⛳️ 功不唐捐,玉汝于成 目录 前言: 正文 主要阶段: 优点: 缺点: 应用范围: 结语 我的其他博客 前言&am…...

两个字符串间的最短路径问题 (100%用例)C卷 (JavaPythonNode.jsC语言C++)

给定两个字符串,分别为字符串A与字符串B。例如A字符串为ABCABBA,B字符串为CBABAC可以得到下图m*n的二维数组,定义原点为(0,0),终点为(m,n),水平与垂直的每一条边距离为1,映射成坐标系如下图 从原点(0,0)到(0,A)为水平边,距离为1,从(0,A)到(A,C)为垂直边,距离为1;假设两…...

通过ADB来实现脚本来控制手机

ADB 简介 adb的全称为Android Debug Bridge,安卓调试桥,可以通过调试命令来控制手机,诸如开机,关机等按键控制;或者启动,关闭应用;异或进行触摸模拟. 通过学习adb,可以实现简单的脚本控制,最大的特点是不需要root,对于普通手机都可以进行,帮助我们完成一些简单的重复性事件,…...

机器学习之K-means聚类

概念 K-means是一种常用的机器学习算法,用于聚类分析。聚类是一种无监督学习方法,它试图将数据集中的样本划分为具有相似特征的组(簇)。K-means算法的目标是将数据集划分为K个簇,其中每个样本属于与其最近的簇中心。 以下是K-means算法的基本步骤: 选择簇的数量(K值)…...

SSH 端口转发:如何将服务绑定到本地 IP 地址

在日常工作中,我们经常需要访问位于远程服务器上的服务,如数据库、Web 应用程序或其他类型的服务器。直接访问这些服务可能会因为安全限制或网络配置而变得复杂或不可能。这时,SSH 端口转发就成了我们的得力助手。在本篇博客中,我…...

回归预测 | MATLAB实ZOA-LSTM基于斑马优化算法优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实ZOA-LSTM基于斑马优化算法优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实ZOA-LSTM基于斑马优化算法优化长短期记忆神经网络的多输入单输出数据回归预测模型 (…...

python实现图像的二维傅里叶变换——冈萨雷斯数字图像处理

原理 二维傅里叶变换是一种在图像处理中常用的数学工具,它将图像从空间域(我们通常看到的像素排列)转换到频率域。这种变换揭示了图像的频率成分,有助于进行各种图像分析和处理,如滤波、图像增强、边缘检测等。 在数学…...

We are a team - 华为OD统一考试

OD统一考试 题解&#xff1a; Java / Python / C 题目描述 总共有 n 个人在机房&#xff0c;每个人有一个标号 (1<标号<n) &#xff0c;他们分成了多个团队&#xff0c;需要你根据收到的 m 条消息判定指定的两个人是否在一个团队中&#xff0c;具体的: 消息构成为 a b …...

NFC物联网智慧校园解决方案

近场通信(Near Field Communication&#xff0c;NFC)又称近距离无线通信&#xff0c;是一种短距离的高频无线通信技术&#xff0c;允许电子设备之间进行非接触式点对点数据传输交换数据。这个技术由免接触式射频识别(RFID)发展而来&#xff0c;并兼容 RFID&#xff0c;主要用于…...

鸿蒙系列--组件介绍之容器组件

一、Badge 描述&#xff1a;给其他组件添加标记 子组件&#xff1a;支持单个子组件 1.创建数字标记 Badge(value: {count: number, position?: BadgePosition, maxCount?: number, style: BadgeStyle}) 2.创建字符串标记 Badge(value: {value: string, position?: Badge…...

perl使用find函数踩坑

前言 写了一个脚本可以同时检查多个仿真log文件&#xff0c;并生成html表格。按照文件修改时间从新到旧排序。但是一直无法使用stat函数获取修改时间。 结论&#xff1a;find函数会改变程序执行的当前目录&#xff0c;find(\&process_files, $dir);函数是在$dir目录下运行…...

Java IDEA JUnit 单元测试

JUnit是一个开源的 Java 单元测试框架&#xff0c;它使得组织和运行测试代码变得非常简单&#xff0c;利用JUnit可以轻松地编写和执行单元测试&#xff0c;并且可以清楚地看到哪些测试成功&#xff0c;哪些失败 JUnit 还提供了生成测试报告的功能&#xff0c;报告不仅包含测试…...

深入理解 c++ 函数模板

函数模板是C中的一种强大特性&#xff0c;它允许程序员编写一个可以处理多种数据类型的函数。通过使用模板&#xff0c;我们可以编写一次函数&#xff0c;然后在多种数据类型上使用它&#xff0c;这大大提高了代码的复用性。 1. 基本概念 函数模板是一种参数化类型的工具&…...

系列十二、Linux中安装Zookeeper

一、Linux中安装Zookeeper 1.1、下载安装包 官网&#xff1a;Index of /dist/zookeeper/zookeeper-3.4.11 我分享的链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/14Hugqxcgp89f2hqGWDwoBw?pwdyyds 提取码&#xff1a;yyds 1.2、上传至/opt目录 1.3、解…...

自学网站建设视频/软文营销写作技巧有哪些?

mysql 出现 the table ‘xxxx’ is full 的问题 一、 修改Mysql的配置文件my.ini&#xff0c;在[mysqld]下添加/修改两行&#xff1a; tmp_table_size 256M max_heap_table_size 256M系统默认是16M&#xff0c;修改完后重启mysql Windows的mysql配置文件my.ini在这里 “C:/…...

优是是什么网站/简阳seo排名优化培训

如何掌握C#的核心技术 感谢网友毛大神制作的图。 引子 前不久看到一个段子&#xff0c;某年宁波交警引进人脸识别技术抓拍行人闯红灯&#xff0c;结果一天下来被发现闯红灯次数最多的是珠海女子董小姐&#xff0c;日闯红灯3000多次。宁波交警连夜研究抓捕方案&#xff0c;最后分…...

取名字网站如何做/落实好疫情防控优化措施

思路 对于给定的数组 a1,a2,a3,a4,a5,… 假设a4 < a3. 为了实现数组的单调非减&#xff0c;我们必须改变a4和a3其中的一个值&#xff0c;与此同时&#xff0c;为了后续计算的需要&#xff0c;我们应当尽可能使a4相对较小。此时&#xff0c;究竟是改变a3,还是a4取决于a2值的…...

帝国cms做门户网站/网站收录情况查询

Cocoa Cocoa基于Quartz&#xff0c;采用Painter model来绘制 Painter model主要是在一个连续的绘制操作中会将一层的绘制应用于一个output 画布(canvas)上 在添加新的绘制层(layers of paints)时先前的绘制层可能被覆盖或者修改 绘制环境(drawing enviroment) 包含数字画布(…...

书店商城网站建设方案/百度怎么提交收录

假设consul软件安装在电脑ComputerA上&#xff0c;那么需要注册的服务ServiceA1也需要安装在电脑ComputerA上&#xff0c; 一个服务就是一个提供了ipport&#xff08;或者域名&#xff09;的应用程序。 服务&#xff1a; 服务&#xff1a; 1、服务名称&#xff1a;XXX。则生成的…...

扣扣网页版手机登录入口/百度快速排名优化服务

moco 做测试桩入门 https://github.com/dreamhead/moco 环境准备 1.moco-runner-0.12.0-standalone.jar2.java 版本1.8.0_20 Moco环境搭建 1.moco是一个开源的框架&#xff0c;在github上可以下载到&#xff0c;github源码地址 下载&#xff1a;moco-runner-0.12.0-standal…...