数据库含EXISTS的查询

一、含EXISTS的简单子查询

SELECT Sname
FROM Student
WHERE EXISTS
		(SELECT *
		FROM SC
		WHERE Sno=Student.Sno AND Cno='1');

在上述例子中,查询过程如下:
首先取外层查询中Student表的第一个元组,根据它与内层查询相关的属性值(Sno值)处理内层查询,若WHERE子句返回值为真,则取外层查询中该院组的Sname放入结果表
然后再取Student表的下一个元组
重复这一过程,直至外层Student表全部检查完为止

若有以下表:
Student表:

学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept
1 李勇 20 CS
2 刘晨 19 CS
3 王敏 18 MA
4 张立 19 IS

SC表:

学号Sno 课程号Cno 成绩Grade
1 1 92
1 2 85
1 3 88
2 2 90
2 3 80

则具体过程如下:
首先取第一个数据

学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept
1 李勇 20 CS

在表SC中找符合Sno=1且Cno=1的数据,有符合条件的元组,则子查询返回1,该元组加入结果中
对后续元组类似处理

二、含双重NOT EXISTS的查询语句

你可能感兴趣的:(数据库)