SELECT:
带有EXISTS谓词的子查询:
EXISTS代表存在量词 ∃ \exists ∃。带有EXISTS谓词的子查询不反回任何数据,只产生逻辑真值“true”或者逻辑假值“false”
【例3.60】查询所有选修了1号课程的学生姓名
SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1')
使用存在量词EXISTS后,若内层查询结果为非空,那么外层的WHERE子句返回真值,否则返回假值。
与EXISTS谓词对应的是NOT EXISTS谓词。使用存在量词NOT EXISTS后,若内层查询结果为空,则外层的WHERE子句返回真值,负责返回假值。
【例3.61】查询没有选修1号课程的学生姓名
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='1')
【例3.62】查询选修了全部课程的学生姓名
SQL中没有全称量词 ∀ \forall ∀,但是可以把带有全称量词的谓词转化为等价的带有存在量词的谓词:
( ∀ x ) P ≡ ¬ ( ∃ x ( ¬ P ) ) (\forall x)P \equiv \neg (\exists x(\neg P)) (∀x)P≡¬</