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

数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)

  • 前言
  • 一、什么是集合查询?
  • 二、集合操作的三种类型
    • 1. 并操作
    • 2. 交操作
    • 3. 差操作
  • 三、使用集合查询的前提条件
  • 四、常见问题与注意事项
  • 五、总结


前言

  • 在前几期博客中,我们探讨了 SQL 连接查询,单表查询,嵌套查询技术等知识点。
  • 从本节开始,我们将深入讲解 SQL 中SQL 集合查询的知识点。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482


一、什么是集合查询?

集合查询就是把多个查询结果像“拼积木”一样组合起来,就像班级里不同小组的同学合并、找交集或找差异
比如:

  • 想找“计算机专业学生”和“年龄≤19岁学生”的合并名单 → 用并操作
  • 想找“同时选修了课程A和课程B的学生” → 用交操作
  • 想找“计算机专业但年龄>19岁的学生” → 用差操作

在这里插入图片描述

二、集合操作的三种类型

1. 并操作

作用:合并两个查询结果,自动去重(类似“+”号)。
语法

SELECT1,2 FROMWHERE 条件1  
UNION  
SELECT1,2 FROMWHERE 条件2;  

例子
查询“计算机科学与技术专业学生”或“年龄≤19岁学生”的所有记录:

SELECT * FROM Student WHERE Smajor='计算机科学与技术'  
UNION  
SELECT * FROM Student WHERE Sage<=19;  

注意

  • 若想保留重复记录,用 UNION ALL(不去重)。
  • 两张表的列数必须相同,对应列的数据类型必须一致(比如都是数字或文本)。

2. 交操作

作用:找出两个查询结果中共同的部分(类似“∩”)。
语法

SELECT1,2 FROMWHERE 条件1  
INTERSECT  
SELECT1,2 FROMWHERE 条件2;  

例子
查询“既是计算机专业,又年龄≤19岁的学生”:

SELECT * FROM Student WHERE Smajor='计算机科学与技术'  
INTERSECT  
SELECT * FROM Student WHERE timestampdiff(year, Sbirthday, curdate())<=19;  

替代方法:用子查询实现交操作(适用于不支持INTERSECT的数据库):

SELECT * FROM Student  
WHERE Smajor='计算机科学与技术'  
AND Sno IN (SELECT Sno FROM Student WHERE Sage<=19);  

3. 差操作

作用:从第一个查询结果中排除第二个查询的结果(类似“-”)。
语法

SELECT1,2 FROMWHERE 条件1  
EXCEPT  
SELECT1,2 FROMWHERE 条件2;  

例子
查询“计算机专业,但年龄>19岁的学生”:

SELECT * FROM Student WHERE Smajor='计算机科学与技术'  
EXCEPT  
SELECT * FROM Student WHERE Sage<=19;  

替代方法:用条件筛选实现差操作:

SELECT * FROM Student  
WHERE Smajor='计算机科学与技术' AND Sage>19;  

三、使用集合查询的前提条件

  1. 列数必须相同
    比如第一个查询选2列(姓名、年龄),第二个查询也必须选2列,不能一个选2列、一个选3列。
  2. 对应列的数据类型必须一致
    比如第一个查询的第一列是“姓名(文本)”,第二个查询的第一列也必须是文本类型,不能是数字。

四、常见问题与注意事项

  1. 数据库兼容性
    • INTERSECTEXCEPT在MySQL中不直接支持,需用子查询或JOIN替代(如上文中的替代方法)。
    • 在SQL Server、Oracle等数据库中可直接使用。
  2. 性能考虑
    • 简单场景下,子查询(如IN)可能比集合操作更易理解和优化。
    • 复杂场景下,集合操作可能更高效(需根据具体数据库优化)。

五、总结

  • UNION(并):把两组人“合在一起”,去重(或保留重复)。
  • INTERSECT(交):找两组人里“同时存在的人”。
  • EXCEPT(差):从第一组人里“去掉”第二组的人。

以上就是这篇博客的全部内容,下一篇我们将继续探索更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

相关文章:

数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论&#xff08;十一&#xff09;SQL 集合查询 超详细讲解&#xff08;附带例题表格对比带你一步步掌握&#xff09; 前言一、什么是集合查询&#xff1f;二、集合操作的三种类型1. 并操作2. 交操作3. 差操作 三、使用集合查询的前提条件四、常见问题与注意事项五、…...

[mcu]系统频率

系统主频的选择直接影响性能、功耗和成本&#xff0c;不同厂商的芯片会根据应用场景设计不同的运行频率。 低频段80MHZ~160MHz 典型频率&#xff1a; 80MHz、120MHz、160MHz 特点&#xff1a; 低功耗&#xff0c;适合电池供电设备 处理能力有限&#xff0c;通常仅支持 单天线…...

clickhouse如何查看操作记录,从日志来查看写入是否成功

背景 插入表数据后&#xff0c;因为原本表中就有数据&#xff0c;一时间没想到怎么查看插入是否成功&#xff0c;因为对数据源没有很多的了解&#xff0c;这时候就想怎么查看下插入是否成功呢&#xff0c;于是就有了以下方法 具体方法 根据操作类型查找&#xff0c;比如inse…...

5G-A:开启通信与行业变革的新时代

最近&#xff0c;不少细心的用户发现手机信号标识悄然发生了变化&#xff0c;从熟悉的 “5G” 变成了 “5G-A”。这一小小的改变&#xff0c;却蕴含着通信技术领域的重大升级&#xff0c;预示着一个全新的通信时代正在向我们走来。今天&#xff0c;就让我们深入了解一下 5G-A&a…...

鸿蒙OS在UniApp中集成Three.js:打造跨平台3D可视化应用#三方框架 #Uniapp

在UniApp中集成Three.js&#xff1a;打造跨平台3D可视化应用 引言 在最近的一个项目中&#xff0c;我们需要在UniApp应用中展示3D模型&#xff0c;并实现实时交互功能。经过技术选型和实践&#xff0c;我们选择了Three.js作为3D渲染引擎。本文将分享我们在UniApp中集成Three.…...

Vue 3 组件化设计实践:构建可扩展、高内聚的前端体系

Vue 3 自发布以来&#xff0c;其引入的 Composition API 与改进的组件模型&#xff0c;为前端架构提供了更强的可组合性、复用性与模块化能力。本文将系统性探讨 Vue 3 如何通过组件化设计&#xff0c;实现复杂应用的解耦、扩展与维护&#xff0c;并结合实际工程经验提供最佳实…...

腾讯云 Python3.12.8 通过yum安装 并设置为默认版本

在腾讯云服务器上&#xff0c;直接通过 yum 安装 Python 3.12.8 可能不可行&#xff0c;因为标准仓库通常不包含最新的 Python 版本。不过&#xff0c;我们可以通过添加第三方仓库或手动安装 RPM 包的方式实现。以下是完整解决方案&#xff1a; 方法 1: 通过第三方仓库安装&am…...

鸿蒙OSUniApp页面切换动效实战:打造流畅精致的转场体验#三方框架 #Uniapp

UniApp页面切换动效实战&#xff1a;打造流畅精致的转场体验 引言 在移动应用开发中&#xff0c;页面切换动效不仅能提升用户体验&#xff0c;还能传达应用的品质感。随着HarmonyOS的普及&#xff0c;用户对应用的动效体验要求越来越高。本文将深入探讨如何在UniApp中实现流畅…...

React 泛型组件:用TS来打造灵活的组件。

文章目录 前言一、什么是泛型组件&#xff1f;二、为什么需要泛型组件&#xff1f;三、如何在 React 中定义泛型组件&#xff1f;基础泛型组件示例使用泛型组件 四、泛型组件的高级用法带默认类型的泛型组件多个泛型参数 五、泛型组件的实际应用场景数据展示组件表单组件状态管…...

TDengine 集群运行监控

简介 为了确保集群稳定运行&#xff0c;TDengine 集成了多种监控指标收集机制&#xff0c;并通过 taosKeeper 进行汇总。taosKeeper 负责接收这些数据&#xff0c;并将其写入一个独立的 TDengine 实例中&#xff0c;该实例可以与被监控的 TDengine 集群保持独立。TDengine 中的…...

图像任务中的并发处理:线程池、Ray、Celery 和 asyncio 的比较

在图像缺陷检测任务中&#xff0c;处理大量图像和点云数据时&#xff0c;高效的并发处理是关键。本文将介绍五种流行的并发处理方法&#xff1a;线程池&#xff08;concurrent.futures.ThreadPoolExecutor&#xff09;、Ray、Celery、asyncio以及搜狗Workflow&#xff0c;并从原…...

DeepSeek 赋能智能物流:解锁仓储机器人调度的无限可能

目录 一、智能物流仓储机器人调度现状1.1 传统调度面临的挑战1.2 现有智能调度的进展与局限 二、DeepSeek 技术探秘2.1 DeepSeek 核心技术原理2.2 DeepSeek 的独特优势 三、DeepSeek 在智能物流仓储机器人调度中的创新应用3.1 智能任务分配与调度3.2 路径规划与避障优化3.3 实时…...

C#上传图片后压缩

上传的图片尺寸不一&#xff0c;手机拍照的有2000*2000像素的&#xff0c;对实际使用来说 文件尺寸太大&#xff0c;文件也有近4M 下面是直接压缩的方法 1、安装包 Magick.NET-Q16-AnyCPU 2、上代码 /// <summary> /// 缩放图片 /// </summary> /// <param …...

uniapp路由跳转toolbar页面

需要阅读uview-ui的API文档 注意需要使用type参数设置后才起作用 另外route跳转的页面会覆盖toolbar工具栏 toConternt(aid) {console.log(aid:, aid)this.$u.route({// url: "pages/yzpg/detail",url: "pages/yzappl/index",// url: "pages/ind…...

【linux】知识梳理

操作系统的分类 1. 桌⾯操作系统: Windows/macOS/Linux 2. 移动端操作系统: Android(安卓)/iOS(苹果) 3. 服务器操作系统: Linux/Windows Server 4. 嵌⼊式操作系统: Android(底层是 Linux) Liunx介绍 liunx系统:服务器端最常见的操作系统类型 发行版:Centos和Ubuntu 远程连接操…...

PostgreSQL 内置扩展列表

PostgreSQL 内置扩展列表 PostgreSQL 自带了许多内置扩展&#xff08;built-in extensions&#xff09;&#xff0c;这些扩展提供了额外的功能而不需要额外安装。以下是主要的内置扩展分类和说明&#xff1a; 标准内置扩展&#xff08;随核心安装&#xff09; 1. 管理类扩展…...

NodeMediaEdge快速上手

NodeMediaEdge快速上手 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中&#xff0c;拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 通过云平台协议注册到NodeMediaServer后&#xff0c;可以同NodeMediaServer结合使用。使用图形化的…...

ChatOn:智能AI聊天助手,开启高效互动新时代

在当今快节奏的生活中&#xff0c;无论是工作、学习还是日常交流&#xff0c;我们常常需要快速获取信息、整理思路并高效完成任务。ChatOn 正是为满足这些需求而生&#xff0c;它基于先进的 ChatGPT 和 GPT-4o 技术&#xff0c;为用户提供市场上最优秀的中文 AI 聊天机器人。这…...

基于Vue3.0的【Vis.js】库基本使用教程(002):图片知识图谱的基本构建和设置

文章目录 3、图片知识图谱3.1 初始化图片知识图谱3.2 修改节点形状3.3 修改节点背景颜色3.4 完整代码下载3、图片知识图谱 3.1 初始化图片知识图谱 1️⃣效果预览: 2️⃣关键代码: 给节点添加image属性: const nodes = ref([{id: 1,...

监督学习 vs 无监督学习:AI两大学习范式深度解析

监督学习 vs 无监督学习&#xff1a;AI两大学习范式深度解析 引言&#xff1a;机器如何"学习"&#xff1f; 想象教孩子识别动物&#xff1a;一种方法是展示图片并告诉名称&#xff08;监督学习&#xff09;&#xff0c;另一种是让孩子自己观察动物特征并分类&#…...

C# Costura.Fody 排除多个指定dll

按照网上的说在 FodyWeavers.xml 里修改 然后需要注意的是 指定多个排除项 不是加 | 是换行 一个换行 就排除一项 我测试的 <?xml version"1.0" encoding"utf-8"?> <Weavers xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&quo…...

NodeJS全栈WEB3面试题——P8项目实战类问题(偏全栈)

&#x1f4e6; 8.1 请描述你做过的 Web3 项目&#xff0c;具体技术栈和你负责的模块&#xff1f; 我主导开发过一个基于 NFT 的数字纪念平台&#xff0c;用户可以上传照片并生成独特的纪念 NFT&#xff0c;结合 IPFS 和 ERC-721 实现永存上链。 &#x1f527; 技术栈&#xf…...

小白的进阶之路系列之五----人工智能从初步到精通pytorch张量

张量 张量是一种特殊的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量来编码模型的输入和输出,以及模型的参数。 张量类似于NumPy的ndarray,除了张量可以在gpu或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存,从而消除了复制数据…...

设计模式——迭代器设计模式(行为型)

摘要 本文详细介绍了迭代器设计模式&#xff0c;这是一种行为型设计模式&#xff0c;用于顺序访问集合对象中的元素&#xff0c;同时隐藏集合的内部结构。文章首先定义了迭代器设计模式并阐述了其核心角色&#xff0c;包括迭代器接口、具体迭代器、容器接口和具体容器。接着&a…...

android-studio-2024.3.2.14如何用WIFI连接到手机(给数据线说 拜拜!)

原文&#xff1a;Android不用数据线就能调试真机的方法—给数据线说 拜拜&#xff01;&#xff08;adb远程调试&#xff09; android-studio-2024.3.2.14是最新的版本&#xff0c;如何连接到手机&#xff0c;可用WIFI&#xff0c;可不用数据线&#xff0c;拜拜 第一步&#xf…...

[特殊字符] xbatis 一款好用 ORM 框架 1.8.8-M2 发布,节省 1/3 代码和时间的框架!!!

1.8.8-M2 更新内容: 1:优化默认值,对同一类减少重复调用2:优化分页,支持 limit (-1) 进行忽略分页3:优化 UpdateChain.set;支持.set (SysUser::getVersion, c -> c.plus (1))4:优化 @Fetch, 已增强,无法配置 groupby、forceUseIn(已去除)5:增强 @Fetch,支持中间…...

js 动画库、2048核心逻辑、面试题add[1][2][3]+4

1、js 动画库 web animation api &#xff08;1&#xff09;初始化代码 hmtl、css 部分 初始化全局背景黑色初始化黄色小球 js 部分 监听全局点击事件创建并添加元素 class"pointer" 的 div 标签 设置 left、top 位置监听动画结束事件&#xff0c;移除该元素 定位小…...

华为OD机试真题——书籍叠放(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

PyTorch-Transforms的使用(二)

对图像进行处理 安装open cv ctrlP 看用法 ToTensor的使用 常见的Transforms 归一化的图片 两个长度为三的数组&#xff0c;分别表示三个通道的平均值和标准差 Resize&#xff08;&#xff09; Compose&#xff08;&#xff09; 合并执行功能&#xff0c;输入进去一个列表&a…...

Pytorch知识点2

Pytorch知识点 1、官方教程2、张量&#x1f9f1; 0、数组概念&#x1f9f1; 1. 创建张量&#x1f4d0; 2. 张量形状与维度&#x1f522; 3. 张量数据类型➗ 4. 张量的数学与逻辑操作&#x1f504; 5. 张量的就地操作&#x1f4e6; 6. 复制张量&#x1f680; 7. 将张量移动到加速…...