數據庫系統概論(十一)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

非常感謝您的閱讀,喜歡的話記得三連哦

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907942.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907942.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何設計一個支持線上線下的通用訂單模塊 —— 面向本地生活服務行業的架構思路

一、背景與目標 在本地生活服務行業中&#xff0c;訂單模塊作為連接用戶、商戶、商品、支付、履約的核心組件&#xff0c;支撐著平臺內多樣化的業務形態&#xff0c;例如外賣配送、到店服務、團購核銷、即時零售、預約預訂、線下消費等。 設計一個可支持線上線下融合的通用訂…

Django數據庫連接報錯 django.db.utils.NotSupportedError: MySQL 8 or later is required

可嘗試換django版本 pip install django3.2.13 另外mysql下載地址 https://dev.mysql.com/downloads/installer/ 安裝可以參考&#xff1a; https://blog.csdn.net/HHHQHHHQ/article/details/148125549 重點&#xff1a;用戶變量添加 C:\Program Files\MySQL\MySQL Server …

github 提交失敗,連接不上

1. 第一種情況&#xff0c;開了加速器&#xff0c;導致代理錯誤 刪除hosts文件里相關的github代理地址 2. 有些ip不支持22端口連接,改為443連接 ssh -vT gitgithub.com // 命令執行結果 OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2 debug1: C…

24位高精度數據采集卡NET8860音頻振動信號采集監測滿足自動化測試應用現場的多樣化需求

NET8860 高分辨率數據采集卡技術解析 阿爾泰科技的NET8860是一款高性能數據采集卡&#xff0c;具備8路同步模擬輸入通道和24bit分辨率&#xff0c;適用于高精度信號采集場景。其輸入量程覆蓋10V、5V、2V、1V&#xff0c;采樣速率高達256KS/s&#xff0c;能夠滿足多種工業與科研…

JavaScript 模塊系統:CJS/AMD/UMD/ESM

文章目錄 前言一、CommonJS (CJS) - Node.js 的同步模塊系統1.1 設計背景1.2 瀏覽器兼容性問題1.3 Webpack 如何轉換 CJS1.4 適用場景 二、AMD (Asynchronous Module Definition) - 瀏覽器異步加載方案2.1 設計背景2.2 為什么現代瀏覽器不原生支持 AMD2.3 Webpack/Rollup 如何處…

使用NMEA Tools生成GPS軌跡圖

前言 在現代科技快速發展的時代&#xff0c;GPS定位技術已經廣泛應用于各種領域&#xff0c;如導航、物流、運動追蹤等。為了獲取和分析GPS數據&#xff0c;我們常常需要使用一些專業的工具。本文將詳細介紹如何使用一款名為“NMEA Tools”的APK應用&#xff0c;結合GPSVisual…

Word雙欄英文論文排版攻略

word寫雙欄英文論文的注意事項 排版首先改字體添加連字符還沒完呢有時候設置了兩端對齊會出現這樣的情況&#xff1a; 公式文獻 等我下學期有時間了&#xff0c;一定要學習Latex啊&#xff0c;word寫英文論文&#xff0c;不論是排版還是公式都很麻煩的&#xff0c;而Latex一鍵就…

FactoryBean 接口

Spring 框架中 FactoryBean 接口的特性&#xff0c;這是 Spring 提供的一種特殊機制&#xff0c;用于創建和管理復雜 Bean。讓我通過示例和解釋幫您理解這個概念。 一、FactoryBean 是什么&#xff1f; FactoryBean 是 Spring 框架提供的一個工廠接口&#xff0c;用于創建復雜…

MySQL + CloudCanal + Iceberg + StarRocks 構建全棧數據服務

簡述 在業務數據快速膨脹的今天&#xff0c;企業對 低成本存儲 與 實時查詢分析能力 的需求愈發迫切。 本文將帶你實戰構建一條 MySQL 到 Iceberg 的數據鏈路&#xff0c;借助 CloudCanal 快速完成數據遷移與同步&#xff0c;并使用 StarRocks 完成數據查詢等操作&#xff0c…

javaEE->多線程:線程池

線程池 線程誕生的意義&#xff1a;因為進程的創建/銷毀&#xff0c;太重量了&#xff08;比較慢&#xff09; 但如果近一步提高創建/銷毀的頻率&#xff0c;線程的開銷也不容忽視。 有兩種方法可以提高效率&#xff1a; 1.協程&#xff08;輕量級線程&#xff09;&#xff…

【001】利用github搭建靜態網站_essay

文章目錄 1. 簡介2. 先了解網址規則2.1 文件及網址形式2.2 相互訪問 3. 搭建網頁的過程3.1 網頁文件3.2 github搭建倉庫及文件上傳3.3 搭建網站 1. 簡介 相信大家都有過想要自己搭建一個穩定可靠的網站&#xff0c;github是一個不錯的選擇&#xff0c;本來國內有gitee可以搭建…

搜索引擎2.0(based elasticsearch6.8)設計與實現細節(完整版)

1 簡介 1.1 背景 《搜索引擎onesearch 1.0-設計與實現.docx》介紹了1.0特性&#xff0c;搜索schema&#xff0c;agg&#xff0c;表達式搜索映射&#xff0c;本文介紹onesearch 2.0 新特性, 參考第2節 規劃特性與發布計劃 1.2 關鍵詞 文檔 Document elasticsearch 一行數據稱為…

【ClickHouse】RollingBitmap

ClickHouse 的 RollingBitmap 是一種基于 Bitmap 的數據結構&#xff0c;用于高效處理數據的動態變化和時間窗口計算。以下是關于 ClickHouse RollingBitmap 的相關信息&#xff1a; RollingBitmap 的應用場景 RollingBitmap 主要用于需要處理動態數據和時間窗口計算的場景&am…

新版智慧社區(小區)智能化弱電系統解決方案

該方案聚焦新版智慧社區智能化弱電系統建設,以物聯網、云計算、AI 人臉識別等技術為支撐,構建涵蓋智能可視化對講、智慧門禁、智能梯控、智慧停車、視頻監控等核心系統的社區智能化體系,并通過智慧社區集成平臺實現設備管理、數據統計、預警聯動等功能。方案旨在解決傳統社區…

11高可用與容錯

一、Broker 高可用架構設計 1.1 RabbitMQ 鏡像集群方案 集群搭建步驟 # 節點1初始化 rabbitmq-server -detached rabbitmq-plugins enable rabbitmq_management# 節點2加入集群 rabbitmqctl stop_app rabbitmqctl join_cluster rabbitnode1 rabbitmqctl start_app# 創建鏡像…

AsyncIOScheduler與BackgroundScheduler的線程模型對比

1. BackgroundScheduler的線程機制? ?多線程模型?&#xff1a;BackgroundScheduler基于線程池執行任務&#xff0c;默認通過ThreadPoolExecutor創建獨立線程處理任務&#xff0c;每個任務運行在單獨的線程中&#xff0c;主線程不會被阻塞。?適用場景?&#xff1a;適合同步…

ceph 對象存儲用戶限額滿導致無法上傳文件

查看日志 kl logs -f rook-ceph-rgw-my-store-a-5cc4c4d5b5-26n6j|grep -i error|head -1Defaulted container "rgw" out of: rgw, log-collector, chown-container-data-dir (init) debug 2025-05-30T19:44:11.573+0000 7fa7b7a6d700

2025-05-31 Python深度學習9——網絡模型的加載與保存

文章目錄 1 使用現有網絡2 修改網絡結構2.1 添加新層2.2 替換現有層 3 保存網絡模型3.1 完整保存3.2 參數保存&#xff08;推薦&#xff09; 4 加載網絡模型4.1 加載完整模型文件4.2 加載參數文件 5 Checkpoint5.1 保存 Checkpoint5.2 加載 Checkpoint 本文環境&#xff1a; Py…

批量導出CAD屬性塊信息生成到excel——CAD C#二次開發(插件實現)

本插件可實現批量導出文件夾內大量dwg文件的指定塊名的屬性信息到excel&#xff0c;效果如下&#xff1a; 插件界面&#xff1a; dll插件如下&#xff1a; 使用方法&#xff1a; 1、獲取此dll插件。 2、cad命令行輸入netload &#xff0c;加載此dll&#xff08;要求AutoCAD&…

在Linux環境里面,Python調用C#寫的動態庫,如何實現?

在Linux環境中&#xff0c;Python可以通過pythonnet&#xff08;CLR的Python綁定&#xff09;或subprocess調用C#動態庫。以下是兩種方法的示例&#xff1a; 方法1&#xff1a;使用pythonnet&#xff08;推薦&#xff09; 前提條件 安裝Mono或.NET Core運行時安裝pythonnet包…