查詢選修了所有課程的學生姓名
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...