MySQL复合查询
目录
多表查询
自连接
子查询
单行子查询
多行子查询
in关键字
all关键字
any关键字
多列子查询
from中使用子查询
合并查询
union 操作符
union all 操作符
内外连接
内连接
外连接
左外连接
右外连接
前几期我们已经学习了MySQL的基本查询,但是基本查询一般情况即要查询的字段都在一个表中,所以基本查询就是单表查询,但是有时候我们要查找的字段可能会存在于多张表中,基于多张表的查询我们称之为复合查询,基于此,本期我们将进行复合查询的学习。
多表查询
还是我们之前的三张表。dept(部门表),emp(雇员表),salgrade(薪资等级表)。
情景:显示雇员名、雇员工资以及所在部门的名字。
不难发现,雇员名和雇员工资都在emp表里,但是部门名称并不在emp表里,而在dept表里,所以此时,我们就不能单单从emp表里获取我们想要的字段,此时就要在emp表和dept表中联合进行查询,通过emp表中的deptno(外键)和dept表中的deptno(主键)建立两个表的关联关系,最终查找需要的字段。
上述查询的方式我们就称之为复合查询,也即多表查询。
但是多表查询仅仅是从两个表中查询吗,如果我们不给定筛选条件,图示如下。
不给定筛选条件,我们发现emp表中所有数据会和dept表中的所有数据进行任意组合,这种组合方式我们就称之为笛卡尔积,但是笛卡尔积之后的数据大部分是无效的,我们可以看到,不相同的部门编号被整合成了一条记录,那么这条记录是无意义的。
基于此,我们在进行多表查询时,必须在where子句中给出指定的筛选条件,此时多表查询之后的数据才是有效的。
上述情景,多表查询结果如下。
- 显示部门号为10的部门名,员工名和工资。
- 显示各个员工的姓名,工资,及工资级别。
在salgrade表中有losal和hisal字段,所以可以用雇员的sal与这两个字段进行匹配筛选,最终筛选出来的记录就是有效的记录,然后再次进行多表查询。
自连接
何为自连接?
简单来说就是自己的表和自己的表做笛卡尔积,然后对笛卡尔积之后的记录进行查询。
有这样的使用场景吗?
有的,如emp表。情景:我们要查询某个雇员的领导的姓名。
在雇员表中,每个雇员的记录中都会含有其领导的编号,而在雇员表中又有雇员编号,和雇员姓名,所以就可以通过自连接,使用领导编号和雇员编号相同作为筛选条件,筛选出复合条件的记录,最终查询出领导姓名。
子查询
何为子查询?
子查询,就是一次select的结果可以作为另一个select的筛选条件。
单行子查询
何为单行子查询?
单行子查询,就是作为筛选条件的select子句,查询出来的记录只有一条。
- 显示和 SMITH 同一部门的员工。
多行子查询
多行子查询,就是作为筛选条件的select子句,查询出来的记录有多条。
in关键字
- 查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10号自己的。
all关键字
- 查询工资比部门30的所有员工的工资高的员工的姓名、工资和部门号。
any关键字
- 显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)。
我们发现,any和all的区别就是any是只要条件满足子查询中的所有记录中的一个记录就可以,且最终的查询结果是包含子查询的记录的。
多列子查询
何为多列子查询,就是子查询的查询结果中包含多个字段。
- 查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人。
from中使用子查询
在使用select子句时,我们可以将select出来的结果也看作一张表。
- 显示每个高于自己部门平均工资的员工的姓名,部门,工资,部门的平均工资。
- 查询每个部门工资最高的人的姓名,工资,部门,最高工资。
- 显示每个部门的信息(部门名,编号,地址)和人员数量。
合并查询
为了合并多个 select 的执行结果,可以使用 union 和 union all 集合操作符。
union 操作符
- 查询工资大于2500或职位是MANAGER员工。
一般情况下,工资大于2500的条件查询出来的员工记录和职位是MANAGER的查询条还能查询出来的员工记录可能为一条记录,但是 union 操作符会将重复的查询记录去重。
union all 操作符
- 查询工资大于2500或职位是MANAGER员工。
我们发现,union all 操作符并不会对查询的记录进行去重。
内外连接
内连接
之前我们的所有多表查询都是内连接。
但是大家要有一个认识,任意的两张表都可以形成内连接。
如果两张表如果没有意义相同的字段进行内连接。没有查询条件进行查询,查询的结果就是两张表记录笛卡尔积,此时的笛卡尔积之后的记录都是毫无意义的,就算给定了任何查询条件,查询出来的结果也一定是空。如果两张表有意义相同的字段。
如果两张表有意义相同的字段进行内连接。没有查询条件进行查询,查询的结果仍然是两张表记录的笛卡尔积,但是这个笛卡尔积中有 有效的记录,如果给定了合适查询条件,那么查询出来的结果一般不会是空的。
综上,两个表如果没有相同意义的字段,那么就不要内连接,因为内连接是没有意义的。
所以基于此,内连接一定要是两个表有意义相同的字段,这样笛卡尔积之后,可以根据筛选条件,筛选出有效的记录。
内连接语法:select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
- 显示SMITH的名字和部门名称。
下图分别为以往的多表查询和内连接查询。
外连接
外连接分为左外连接和右外连接,仍然是当两个表有相同意义的字段时,再进行外连接。
左外连接
左外连接其实就是两个表进行内连接时,保留左边的表。
左外连接语法:select 字段名 from 表名1 left join 表名2 on 连接条件
创建两张表stu(学生表),exam(成绩表),并插入数据。
- 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来。
右外连接
右外连接其实是两个就表进行内连接时,保留右边的表。
右外连接语法:select 字段名 from 表名1 right join 表名2 on 连接条件
- 对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来。
但是要注意的是,内连接可以没有 on 条件,但是外连接必须有 on 条件。
以上便是本期的复合查询的全部内容。
本期内容到此结束^_^
相关文章:
MySQL复合查询
目录 多表查询 自连接 子查询 单行子查询 多行子查询 in关键字 all关键字 any关键字 多列子查询 from中使用子查询 合并查询 union 操作符 union all 操作符 内外连接 内连接 外连接 左外连接 右外连接 前几期我们已经学习了MySQL的基本查询&…...
登录Xshell主机及Linux基本指令
✅博客主页:爆打维c-CSDN博客 🐾 🔹分享c、c知识及代码 🐾 🔹Gitee代码仓库 五彩斑斓黑1 (colorful-black-1) - Gitee.com 一、操作系统简介 Linux其实跟我们熟知的Window一样,它们都是操作系统。 &#x…...
[LevelDB]关于LevelDB存储架构到底怎么设计的?
本文内容组织形式 LevelDB 存储架构重要特点总体概括LevelDB中内存模型MemTableMemTable的数据结构背景:SkipListSkiplist的数据结构 Skiplist的数据访问细节 SkipList的核心方法Node细节源代码 MemTable的数据加速方式Iterator 的核心方法 MemTable 的读取&写入…...
深入解析 React Diff 算法:原理、优化与实践
深入解析 React Diff 算法:原理、优化与实践 1. 引言 React 作为前端领域的标杆框架,采用 虚拟 DOM(Virtual DOM) 来提升 UI 更新性能。React 的 Diff 算法(Reconciliation) 是虚拟 DOM 运行机制的核心&a…...
【从零开始】Air780EPM的LuatOS二次开发——OneWire协议调试注意事项!
当涉及到与传感器、执行器等外部设备交互时,OneWire协议的高效调试成为决定项目成败的关键环节。OneWire协议(单总线协议)以其仅需一根数据线即可实现设备通信的极简特性,被广泛应用于温度传感器、身份识别模块等场景。 一、LuatO…...
响应(Response)
在 Flask 中,视图函数可以返回多种类型的响应,例如字符串、HTML、JSON、文件等。Flask 提供了 make_response 函数,用于生成和自定义 HTTP 响应。 2.1 默认响应 默认情况下,视图函数返回的字符串会被 Flask 包装成一个 HTTP 响应…...
C++学习之云盘项目fastDFS
1.资料介绍 1.1 一些概念 1. 什么是服务器 硬件 : 一台配置高的电脑 软件 : 电脑必须有一个能够解析 http 协议的软件 2. 常见的 Web 服务器 tomcat 服务器 apache 组织产品 , 开源的免费服务器 weblogic 服务器 bea 公司 , 收费的服务器 不交费 , 访问量受限…...
使用vue3+el-form实现动态新增名称,值,并对名称进行必填校验
使用vue3el-form实现动态新增名称,值,并对名称进行必填校验 效果图 代码 <template><el-form :model"form" :rules"rules" ref"dynamicForm"><!-- 动态添加的名称和值 --><el-row v-for"(ite…...
Spring Boot 集成高德地图电子围栏
摘要:本文手把手教你通过 Spring Boot 调用高德地图 API 实现电子围栏功能,涵盖云端围栏创建、设备位置监控与本地算法校验,附带完整代码和避坑经验! 一、电子围栏核心原理 1.1 什么是电子围栏? 虚拟地理边界&#x…...
3.JVM-内部结构
栈结构 动态链接 栈中的对象指向堆中的实际引用 符号引用: 比如一个类的名称 直接引用: 具体堆中数据信息 方法返回 栈中上一层的结果和下一层的指令 操作数栈 局部变量 该线程中需要的变量 PC计数器 程序计数器:存当前执行到那一步 操作数栈里面将计算完之后的结果推入局…...
Spring 框架中常用注解和使用方法
Spring 框架中常用注解的详细解释与应用场景,结合核心功能和实际开发需求进行分类说明: 1.组件定义注解 1.1 Component 作用:通用注解,将普通 Java 类标记为 Spring 管理的 Bean,由容器实例化和管理,相当…...
神策数据接入 DeepSeek,AI 赋能数据分析与智能运营
在 AI 技术迅猛发展的浪潮下,神策数据正在加速推进人工智能在数据分析和智能运营领域的深度应用。近日,神策数据宣布全面接入 DeepSeek,为企业客户带来更加智能化、高效的数据分析与智能运营服务。这一举措展现了神策数据在人工智能方向的探索…...
微软OneNote无法同步解决方案
目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败࿱…...
一般机器学习有哪些算法?
传统的机器学习算法主要依赖统计学和优化方法,不依赖深层神经网络,通常具有较高的可解释性且适用于中小规模数据集。以下是经典的传统机器学习算法分类及代表性模型: 一、监督学习(Supervised Learning) 1. 回归&…...
RAGFlow部署与使用(开源本地知识库管理系统,包括kibana配置)
一、RAGFlow 简介 戳我访问RAGFlow RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。它可以给我们搭建本地知识库,将用户的知识文档上传到RAGFlow后,通过文档切分、向量入库,在…...
STM32G070CBT6读写FLASH中的数据
向FLASH中写入数据函数 /*函数说明:向FLASH中写数据形参:addr-要写入数据的起始地址 data-准备写入数据 len-数据大小返回值:1-成功,0-失败 */ uint8_t FlashWriteData(uint64_t addr,uint8_t data[],size_t len) {uint32_t Fir…...
如何使用HACS一键集成米家与果家设备到HomeAssistant玩转智能家居
文章目录 前言1. 下载HACS源码2. 添加HACS商店3. 绑定米家设备 前言 各位科技潮人和智能家居发烧友们,是不是也梦想着把家里变成一个高科技的空间?有了群晖NAS这位得力助手,不仅存储空间大得吓人,还能通过Docker轻松安装各种应用…...
Flutter_学习记录_状态管理之GetX
1. 状态管理、Flutter Getx介绍 1.1 状态管理 通俗的讲:当我们想在多个页面(组件/Widget)之间共享状态(数据),或者一个页面(组件/Widget)中的多个子组件之间共享状态(数…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_09自定义单元格的固定表头表格
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_09自定义单元格…...
基于 Prometheus + Grafana 监控微服务和数据库
以下是基于 Prometheus Grafana 监控微服务和数据库的详细指南,包含架构设计、安装配置及验证步骤: 一、整体架构设计 二、监控微服务 1. 微服务指标暴露 Spring Boot 应用: xml <!-- 添加 Micrometer 依赖 --> <dependency>…...
文件解析漏洞
一,IIS解析漏洞 1,IIS6.X 目录解析 在iis的⽹站根⽬录新建⼀个名为q.asp的⽂件,在q.asp中新建⼀个txt⽂件 在外部浏览器中访问windows2003的iis⽹站中的1.txt 发现asp代码被执⾏ 2,IIS6.X 畸形文件解析 在iis的⽹站根⽬录新建⼀…...
C++学习笔记(二十一)——文件读写
一、文件读写 作用: 文件读写指的是将数据从程序存储到文件,或从文件读取数据,以实现数据的持久化存储。 C 提供了 fstream 头文件,用于文件操作,主要包括: ofstream(输出文件流)—…...
Ubuntu上部署Flask+MySQL项目
一、服务器安装python环境 1、安装gcc(Ubuntu默认已安装) 2、安装python源码 wget https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz 3、安装Python依赖库 4、配置python豆瓣源 二、服务器安装虚拟环境 1、安装virtualenv pip3.10 ins…...
Unity WebGL项目访问时自动全屏
Unity WebGL项目访问时自动全屏 打开TemplateData/style.css文件 在文件最下方添加红色框内的两行代码 使用vscode或者其他编辑器打开index.html 将按钮注释掉,并且更改为默认全屏...
C#RTSP代理推流程序
将不支持rtsp的相机通过rtspserver实现推流 主要功能 1. rtsp交互 2. udp推流 3. Bitmap转H264,RTP打包 4. 支持多路播放...
Redis--渐进式遍历
目录 一、引言 二、介绍 三、命令 四、总结 一、引言 本篇文章将介绍Redis中的渐进式遍历 二、介绍 一般使用keys * 来获取所有的key,但这样的操作如果数据量很大的时候,会将服务器给卡死,所以通过渐进式遍历,就会避免这个问题…...
PyTorch深度学习框架60天进阶学习计划 - 第23天:Transformer架构解析
让我继续完成机器翻译示例的代码: PyTorch深度学习框架60天进阶学习计划:第23天 Transformer架构解析 学习目标 推导自注意力机制数学公式详解位置编码的傅里叶基函数设计对比编码器-解码器结构的信息流动差异 1. Transformer架构概述 Transformer架…...
《C#上位机开发从门外到门内》3-4:基于TCP/IP的远程监控系统设计与实现
文章目录 一、项目概述二、系统架构设计三、通信协议设计四、功能模块实现五、系统安全性与稳定性六、性能优化与测试七、实际应用案例八、结论 随着信息技术的飞速发展,远程监控系统在工业自动化、智能家居、环境监测等领域的应用日益广泛。基于TCP/IP协议的远程监…...
【MySQL】MySQL审计工具Audit Plugin安装使用
MySQL审计工具Audit Plugin安装使用 https://www.cnblogs.com/waynechou/p/mysql_audit.html MySQL 5.6 开启审计功能 https://blog.51cto.com/u_15127556/4344503 MySQL之添加日志审计功能 https://blog.csdn.net/weixin_43279032/article/details/105507170 MySQL开启日志记录…...
Flutter 按钮组件 ElevatedButton 详解
目录 1. 引言 2. ElevatedButton 的基本用法 3. 主要属性 4. 自定义按钮样式 4.1 修改背景颜色和文本颜色 4.2 修改按钮形状和边框 4.3 修改按钮大小 4.4 阴影控制 4.5 水波纹效果 5. 结论 相关推荐 1. 引言 在 Flutter 中,ElevatedButton 是一个常用的…...
AndroidStudio+Android8.0下的Launcher3 导入,编译,烧录,调试
文章目录 编译完成搜索输出文件Android.mk配置gradle编译环境报错一报错二报错三输出文件下载INSTALL_FAILED_TEST_ONLY查找系统签名查找签名工具开始签名查看签名签名问题重新生成秘钥解决方案生成成功挽救错误:重新刷机更换testkey秘钥keystore生成keystoreINSTALL_FAILED_S…...
【差分约束】P5590 赛车游戏|省选-
本文涉及知识点 【数学 线性代数】差分约束 P5590 赛车游戏 题目描述 R 君和小伙伴打算一起玩赛车。但他们被老司机 mocania 骗去了秋名山。 秋名山上有 n n n 个点和 m m m 条边,R 君和他的小伙伴要从点 1 1 1 出发开往点 n n n,每条边都有一个…...
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包(内有教程) 刷机教程简单说明: 1、把下载好的刷机包,U盘里建立一个upgrade文件夹,固件放入此文件夹里,放入U盘中,注意升级包为压缩包不要对…...
【软件工程】06_软件设计
6.1 软件设计概述 1. 软件设计的目标 软件设计的最基本目标就是回答 “概括地描述系统如何实现用户所提出来的功能和性能等方面的需求?” 这个问题。 软件设计的目标是根据软件需求分析的结果,设想并设计软件,即根据目标系统的逻辑模型确定目标系统的物理模型。包括软件体系…...
在Flutter中使用Future读取一个大文件会导致线程阻塞吗
目录 一、Future 与文件读取的机制 1. Dart 的异步 I/O 原理 2. 代码示例 二、什么情况下会阻塞主线程? 1. I/O 操作本身不会阻塞 2. 数据处理可能阻塞 3. 示例对比 三、如何避免阻塞主线程? 1. 将耗时操作移到 Isolate 2. 使用 compute 函数(简化 Isolate 操作)…...
2025-03-17 Unity 网络基础1——网络基本概念
文章目录 1 网络1.1 局域网1.2 以太网1.3 城域网1.4 广域网1.5 互联网(因特网)1.6 万维网1.7 小结 2 IP 地址2.1 IP 地址2.2 端口号2.3 Mac 地址2.4 小结 3 客户端与服务端3.1 客户端3.2 服务端3.3 网络游戏中的客户端与服务端 1 网络 在没有网络之前…...
2025-03-17 学习记录--C/C++-PTA 习题4-8 高空坠球
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题4-8 高空坠球 皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下&…...
Java网络编程socket
一、UDP 特点: ① 用户数据报协议(User Datagram Protocol) ② UDP是面向无连接通信协议 ③ 速度快,一次只能传输64KB数据,数据不安全,容易丢失 (1)单播 一对一 客户端…...
蓝桥杯备赛 Day0_移动零
🎈 个人主页👉:tbRNA-CSDN博客tbRNA-CSDN博客tbRNA-CSDN博客 💯 个人简介:在校大学生一枚💋. 😍 希望我的文章对大家有着不一样的帮助,欢迎大家关注我,感谢大家的多多支持…...
Razor C# 变量
Razor C# 变量 引言 在ASP.NET MVC和Razor视图引擎中,变量是构建动态网页的基础。理解Razor C#变量的使用对于开发者来说至关重要。本文将详细介绍Razor C#变量的概念、类型、作用域以及如何在实际项目中有效使用它们。 一、Razor C# 变量的概念 Razor C# 变量是存储在Raz…...
产品更新丨谷云科技ETLCloud 3月更新速递
本月,我们的数据集成产品ETLCloud继续迎来多项更新,进一步提升系统的兼容性和用户体验。以下是本月更新的亮点内容: 新增10项功能组件,持续丰富产品易用性 聚水潭-奇门通用组件 新增聚水潭-奇门通用组件,帮助企业更…...
如何高效定位网络丢包问题?
引言 本期分享一个比较常见的网络问题--丢包。例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能是数据被丢包…...
gitlab将本地项目提交到远程dev分支
获取Git路径 首先从远程获取到git路径,将给的git地址进行克隆到本地文件; git clone http:************.git 按照git地址的文件路径将本地项目,拷贝到目标文件中 在该路径中,初始化命令; # 初始化项目 git init #…...
Linux命令学习使用列表
Linux命令学习使用列表 1 系统启动相关2 系统网络相关3 系统磁盘相关4 系统定时任务5 系统进程监控 1 系统启动相关 1.1 麒麟V10 sp3修改选择默认启动项 2 系统网络相关 2.1 Linux IP 配置 2.2 ping监测网络通信情况 3 系统磁盘相关 4 系统定时任务 5 系统进程监控 5.1 L…...
分布式锁: 并发时,redis如何避免删别人的锁
在使用Redis实现分布式锁的时候,如何避免在并发情况下误删别人的锁。首先,分布式锁的基本概念:是多个客户端在访问共享资源时,通过某种机制来确保同一时间只有一个客户端能持有锁。 Redis通常用SET命令加上NX选项来创建锁…...
解决 Jupyter Notebook 中本地模块修改不生效的问题
解决 Jupyter Notebook 中本地模块修改不生效的问题 问题原因 当你在 Jupyter Notebook 中导入本地目录的库,修改后重新运行 import 语句却发现修改没有生效,这是因为 Python 的模块缓存机制。Python 解释器会将已导入的模块缓存在 sys.modules 字典中…...
蓝桥杯嵌入式赛道复习笔记2(按键控制LED灯,双击按键,单击按键,长按按键)
硬件原理解释 这张图展示了一个简单的按键电路原理图,其中包含四个按键(PB0、PB1、PB2、PB3、PA0),每个按键通过一个10kΩ的上拉电阻连接到VDD(电源电压),并接地(GND)。 …...
简单爬虫--框架
简单爬虫 import requests import re import chardet# 模拟浏览器的请求头 headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" }# 发送 HTTP 请求获取百…...
游戏引擎学习第163天
我们可以在资源处理器中使用库 因为我们的资源处理器并不是游戏的一部分,所以它可以使用库。我说过我不介意让它使用库,而我提到这个的原因是,今天我们确实有一个选择——可以使用库。 生成字体位图的两种方式:求助于 Windows 或…...
多模态模型Orpheus,基于病理图像的乳腺癌复发风险智能评估工具|顶刊解读·25-03-17
小罗碎碎念 在医学领域,尤其是乳腺癌治疗方面,准确评估患者的复发风险至关重要。对于占乳腺癌很大比例的 HR/HER2 - 亚型患者,目前主要依靠 Oncotype DX 的复发评分(RS)来指导治疗决策。 然而,该检测存在…...