帶有exists謂詞的子查詢 巢狀查詢

2021-06-03 13:27:18 字數 834 閱讀 1384

exists,not exists:

1.含義:帶有exists謂詞的子查詢不返回任何實際資料,它只產生邏輯真值true或邏輯假值false。

2.查詢所有選修了c1號課程的學生姓名:

select sn from s where exists (select * from sc where sno=s.sno and cno='c1')

注:若內查詢結果(select * from sc where sno=s.sno and cno='c1')為空,則外層的where子句返回真值,否則返回假值!

查詢過程:步驟一:從外層查詢中的s表的第乙個元組,根據它,與內層查詢相關的屬性值(sno值)處理內層查詢,若where查詢子句返回值為真(及內層查詢非空),則取此元組放入結果表;

步驟三:重複這一過程,直至s表全部檢查完畢為止!

3。查詢所有未修c1課程的學生姓名:

select sn from s where not exists (select * from sc where sno=s.sno and cno='c1')

4.查詢與「王林」在同一系學習的學生的資訊

select * from s s1 where exists (select * from s s2 where s2.dept=s1.dept and s2.sn='王林')

5.查詢選修了全部課程的學生的姓名

select sn from s where not exists(select * from c where not exists(select * from sc where sno=s.sno and cno=c.cno))

資料庫表s,c,sc截圖請到:截圖位址

帶有ANY SOME 或ALL謂詞的子查詢

子查詢返回單值時可以用比較運算子,但返回多值時要用any 有的系統用some 或all謂詞修飾符。而使用any或all謂詞時則必須同時使用比較運算子。其語義為 any 大於子查詢結果中的某個值 all 大於子查詢結果中的所有值 any 小於子查詢結果中的某個值 all 小於子查詢結果中的所有值 an...

帶有ANY或ALL謂詞的子查詢

子查詢返回單值時可以用比較運算子,而使用any或all謂詞時則必須同時使用比較 運算子,其語義為 any 大於子查詢結果的某個值 all 大於子查詢結果中的所有值 any 大於等於子查詢結果中的某個值 all 大於等於子查詢結果中的所有值 any 小於等於子查詢結果中的某個值 all 小於等於子查詢...

SQL語句查詢謂詞Exists原理之我見

在sql中使用exists表示判斷子查詢是否存在記錄,它返回的是true或false欄位。如果有記錄返回,則返回值,否則返回為false。exists做為where 條件時,是先對where 前的主查詢詢進行查詢,然後用主查詢的結果乙個乙個的代入exists的查詢進行判斷,如果為真則輸出當前這一條主...