SQL中體會多對多

在這里插入圖片描述
我們可以根據學生與課程多對多關系的數據庫模型,給出實際的表數據以及對應的查詢結果示例,會用到JOIN``LEFT JOIN兩種連接

1. 學生表(students

student_idstudent_name
1張三
2李四
3王五

2. 課程表(courses

course_idcourse_name
1數學
2英語
3物理

3. 選課表(student_courses

idstudent_idcourse_id
111
212
322
423
531
633

4. 查詢每個學生選修的課程

查詢語句

SELECT s.student_name,c.course_name
FROM students s
JOIN student_courses sc ON s.student_id = sc.student_id
JOIN courses c ON sc.course_id = c.course_id
ORDER BY s.student_name;

對于這個查詢,會先將 students 表和 student_courses 表進行連接,連接條件是 s.student_id = sc.student_id。這一步會生成一個臨時結果集,其中包含了 students 表和 student_courses 表中 student_id 匹配的所有行。

接著,將這個臨時結果集再和 courses 表進行連接,連接條件是 sc.course_id = c.course_id。這樣就得到了一個包含 studentsstudent_coursescourses 表中相關信息的新臨時結果集。

最后,SELECT語句對新臨時結果集進行選擇

查詢結果:

student_namecourse_name
張三數學
張三英語
李四英語
李四物理
王五數學
王五物理

5. 查詢選修了某門課程的所有學生

查詢語句:

SELECT s.student_name
FROM students s
JOIN student_courses sc ON s.student_id = sc.student_id
JOIN courses c ON sc.course_id = c.course_id
WHERE c.course_name = '數學';

查詢結果:

student_name
張三
王五

6. 查詢每個課程的選課人數

查詢語句:

SELECT c.course_name,COUNT(sc.student_id) AS enrollment_count
FROM courses c
LEFT JOIN student_courses sc ON c.course_id = sc.course_id
GROUP BY c.course_name;

查詢結果:

course_nameenrollment_count
數學2
英語2
物理2

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

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

相關文章

ES如果要查10條數據需要從各個分片上各取多少條數據?

目錄 ES如果要查10條數據需要從各個分片上各取多少條數據? 簡單查詢(如 match_all 或 term 查詢) 深度分頁查詢(如 from + size 查詢) 聚合查詢 什么叫聚合查詢? 聚合查詢的基本結構 常見的聚合類型 聚合查詢的執行過程 聚合查詢的示例 聚合查詢的應用場景 注意…

人機交互自學引導

第1關:輸出“Hello World!” # 在下面一行補充代碼,輸出“Hello World!” print(Hello World!) 第2關:輸出“李白,你好!” # 在下面補充代碼,在兩行中依次輸出“李白,你好!”和“…

CentOS 7 更換 yum 源(阿里云)+ 擴展 epel 源

CentOS 7 更換 yum 源(阿里云) 擴展 epel 源 一、備份現有 yum 源二、下載 yum 源(任選其一即可)三、清理并生成緩存四、安裝 EPEL 擴展源(根據需要下載)五、驗證是否生效六、一鍵腳本(阿里云源…

無人機與傳統巡檢優劣勢對比!

一、無人機巡檢的優勢 1. 高效性 覆蓋范圍廣:可快速掃描大范圍區域(如電力線路、管道、農田等),尤其適合復雜地形(山區、沼澤等)。 速度快:飛行速度遠高于人工巡檢,縮短任務周期…

DrRacket是一款專為Scheme和Racket編程語言設計的集成開發環境(IDE)

DrRacket是一款專為Scheme和Racket編程語言設計的集成開發環境(IDE),由瑞士蘇黎世聯邦理工學院開發。它不僅是初學者學習編程的理想工具,也適用于專業級開發?。 安裝DrRacket 請訪問https://download.racket-lang.org安裝Racke…

走進底層-Java中的IO流

Java中IO流 在Java編程中,IO流(Input/Output Stream)是非常重要的概念,它為程序的輸入和輸出操作提供了一套強大而靈活的機制。本文將詳細介紹Java中IO流的相關內容,包括其基本概念、分類以及常見類的使用示例。 一、…

【Tiny RDM】Redis客戶端工具

Tiny RDM Tiny RDM是一款現代化、輕量級、跨平臺的Redis客戶端,支持Mac、Windows和Linux,目前在Github上已有10kStar。 Github 項目地址: https://github.com/tiny-craft/tiny-rdm 功能特性 極度輕量,基于Webview2&#xff0c…

ctfshow REVERSE re2 萌新賽 內部賽 七夕杯 WP

目錄 re2 萌新賽 flag白給 簽退 數學不及格 內部賽 批量生產的偽劣產品 來一個派森 好好學習 天天向上 屏幕裂開了 七夕杯 逆向簽到 easy_magic re2 ida分析主函數,將flag.txt內容加密寫入enflag.txt 這是密鑰加密過程 標準rc4加密 簡單異或解…

【Linux】線程庫

一、線程庫管理 tid其實是一個地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新線程 %s ,我的地址:0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…

深入剖析 Android Compose 框架的自動動畫:AnimatedVisibility 與 AnimatedContent(二十四)

深入剖析 Android Compose 框架的自動動畫:AnimatedVisibility 與 AnimatedContent 引言 在 Android 應用開發中,動畫是提升用戶體驗的重要手段。它能夠讓界面元素的顯示與隱藏、狀態的切換變得更加自然和流暢,避免生硬的變化給用戶帶來不佳…

文件上傳的小點總結(1)

2.文件類型繞過 問題插入:BP無法攔截本地流量 ①插件限制 不代理的地址列表通常寫有localhost和127.0.0.1,把本地的全都刪掉,然后應用保存。 ②瀏覽器限制 Firefox瀏覽器設置:檢查瀏覽器代理配置和proxy listeners都沒問題后&…

AI基礎01-文本數據采集

本篇文章是學習文本數據的采集,作為人工智能訓練師或者數據分析師有時需要先獲取數據,然后進行數據清洗、數據標注。很明顯數據采集是后續步驟的基礎。 1)數據采集定義 數據采集:data acquisition,DAQ 又稱為數據獲取…

深度學習Python編程:從入門到工程實踐

第一章 Python語言概述與生態體系 1.3 Python在工業界的應用場景 # 示例:使用FastAPI構建RESTful接口 from fastapi import FastAPI from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strprice: float@app.post("/items/") async def cr…

使用CSS3實現炫酷的3D翻轉卡片效果

使用CSS3實現炫酷的3D翻轉卡片效果 這里寫目錄標題 使用CSS3實現炫酷的3D翻轉卡片效果項目介紹技術要點分析1. 3D空間設置2. 核心CSS屬性3. 布局和定位 實現難點和解決方案1. 3D效果的流暢性2. 卡片內容布局3. 響應式設計 性能優化建議瀏覽器兼容性總結 項目介紹 在這個項目中…

HAl庫開發中斷方式接收Can報文的詳細流程

下面給出一個基于 HAL 庫的中斷方式接收 CAN 報文的詳細流程說明,描述每一步的硬件配置、軟件調用和中斷處理機制,而不涉及具體代碼細節,只講解整體原理和步驟: 在使用 HAL 庫時,不需要手動清除中斷標志位。原因如下&…

【讀書筆記】華為《從偶然到必然》

note 華為的成功并非偶然,而是通過IPD體系、投資組合管理、平臺戰略等系統性工具,將研發投資轉化為可持續的商業競爭力。書中強調的“管理即內部因素”理念,揭示了企業規模擴張與管理能力匹配的深層規律,為高科技企業提供了可借鑒…

6.4考研408數據結構圖論核心知識點深度解析

一、最小生成樹(Minimum Spanning Tree) 1.1 Prim算法 易錯點與難點 lowcost數組更新邏輯 錯誤將已加入生成樹的頂點距離重置為0后繼續參與計算,導致后續頂點選擇錯誤未正確處理非連通圖情況,可能陷入死循環(需結合visited數組判斷)示例錯誤:for(int j=0; j<G.vexn…

HashMap添加元素的流程圖

文章目錄 JDK7 vs JDK8 的 HashMap 結構變化Java8 中哈希表的紅黑樹優化機制HashMap 添加元素的完整流程解析1. 計算 key 的哈希值并確定索引2. 檢查該索引位置是否已有元素3. 處理哈希沖突4. 判斷當前存儲結構&#xff08;鏈表還是紅黑樹&#xff09;5. 判斷鏈表長度是否超過 …

Excel(進階篇):powerquery詳解、PowerQuery的各種用法,逆透視表格、雙行表頭如何制作透視表、不規則數據如何制作數據透視表

目錄 PowerQuery工具基礎修改現有數據理規則PowerQuery抓取數據的兩種方式多文件合并透視不同表結構多表追加數據透視追加與合并整理橫向表格:逆透視 數據用拆分工具整理數據算賬齡 不等步長值組合合并文件夾中所有文件PowerQuery處理CSV文件雙行表頭、帶合并單元格如何做數據…

從零開始:使用 Cython + JNI 在 Android 上運行 Python 算法

1. 引言 在 Android 設備上運行 Python 代碼通常面臨性能、兼容性和封裝等挑戰。尤其是當你希望在 Android 應用中使用 Python 編寫的計算密集型算法時&#xff0c;直接運行 Python 代碼可能導致較高的 CPU 占用和較差的性能。為了解決這個問題&#xff0c;我們可以使用 Cytho…