EXISTS代表存在是量词。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。
例41 查询所有选修了1号课程的学生姓名。
本查询涉及Student和Sc关系。我们可以在student中依次取每个元组的sno值,用此值去检查SC关系。若SC中存在这样的元组,其Sno值等于Student.Sno值,并且其Cno='1',则取此Student.Sname送入结果关系。将此想法写成SQL语句是:
select sname,sage
from student
where exists
(select *
from sc
where sno=student.sno and cno='1')
使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值。