資料庫not exists 例題分析

2021-09-29 21:25:41 字數 2313 閱讀 5484

查詢選修了所有課程的學生姓名

sc表(sno是學生號,cno是課程號)

+

----

-------

+-----

+-------+

| sno | cno | grade |+--

----

-----+

-----+

-------

+|201215121|1

|92||

201215121|2

|85||

201215121|3

|88||

201215122|2

|90||

201215122|3

|80|+

----

-------

+-----

+------

-+

student表

+

----

-------

+--------+

------+

------+

-------

+| sno | sname | s*** | sage | sdept |+--

----

-----+

----

----+--

----+--

----+--

-----+

|201215121

| 李勇 | 男 |

20| cs |

|201215122

| 劉晨 | 女 |

19| cs |

|201215123

| 王敏 | 女 |

18| ma |

|201215125

| 張立 | 男 |

19| is |+--

----

-----+

----

----+--

----+--

----+--

----

-+

course表

+

-----+

----

----

------+

------+

----

-----+

| cno | cname | cpno | ccredit |+--

---+--

----

----

----+--

----+--

-------

+|1| 資料庫 |5|

4||2

| 數學 |

null|2

||3| 資訊系統 |1|

4||4

| 作業系統 |6|

3||5

| 資料結構 |7|

4||6

| 資料處理 |

null|2

||7| pascal語言 |6|

4|+--

---+--

----

----

----+--

----+--

-------

+

此時,查詢涉及到三個表。查詢方式如下:

select sname

from student

where

notexists

// (對於某個sname) //收到true 則表明沒有未選的課,記錄該學生,為false則(有一門或多門未選)不記錄

(//(本質,第二層記錄的就是某學生的未選課程)收到返回的false則不記錄,繼續進行本層迴圈(到最後也沒有則返回true),

//收到true記錄當前記錄(本質也就是當前課沒有選)則向上返回false,

select

*from course

where

notexists

// (對於某個cno)

(select

*//此塊查詢的內容是,對於上層的sname同學,是否有選擇的課程,有則向上返回false,結束本層迴圈,

//否則繼續(到最後也沒有找到則返回true)

from sc

where sno=student.sno and cno=course.cno

));

就好像三重迴圈一樣,不妨在草紙上簡單的模擬一下過程。

資料庫NOT EXISTS的理解

資料庫有查詢有四種運算 選擇 投影 連線 除運算 而not exists關鍵字則是基於除運算的查詢。例如 sc表 sno是學生號,cno是課程號 sno cno grade 201215121 1 92 201215121 2 85 201215121 3 88 201215122 2 90 201...

資料庫中的巢狀Not Exists語句

最近在準備複試,看到一道sql查詢題,涉及到兩層not exists,不是很理解,檢視了乙個dalao的解析之後,才明白了啥意思。查詢選修了所有課程的學生 的姓名 select sname from s where not exists select from c where not exists ...

資料庫numeric TCGA資料庫 生存分析

也介紹了下游的差異分析 一文就會tcga資料庫基因表達差異分析 也介紹了 基因表達譜熱圖繪製 fit 分組,data 資料框 我們這裡就結合基因的表達量,來進行分析。首先載入我們的資料。options stringsasfactors f 載入表達資料load f tcga htseq fpkm r...