EXISTS:代表存在量詞。
在SQL中,把具有全稱量詞的謂詞查詢問題轉換成等價的存在量詞的謂詞查詢予以實現。
如有三個表,Student(Sno,Sname),Course(Cno,Cname),SC(Sno,Cno,Score)
問:查詢選修了全部課程的學生的姓名。
可看出,這是一個帶有全稱量詞的謂詞查詢(題中帶有“全部”),將其轉換爲等價的存在量詞的謂詞查詢,即:
不存在一門課程是這個學生沒有選修的。
SQL語句實現:(個人套路)
SELECT Sname //最終要查詢的對象
FROM Student
WHERE NOT EXISTS //對應第一個否定詞“不存在”
(SELECT * //由EXISTS引出的子查詢,SELECT後通常都跟“*”
FROM Course //“不存在”後面跟的是課程,所以在這個子查詢裏找滿足條件的課程
WHERE NOT EXISTS //對應第二個否定詞“沒有”
(SELECT *
FROM SC //“沒有”後面跟的是選修,所以這個子查詢裏是從選課表裏找
WHERE SC.Sno = S.Sno
AND SC.Cno = C.Cno) //分別與上兩個查詢做連接
);