sql (6) exists
SQL中EXISTS的用法
查询所有选修了1号课程的学生的姓名,年龄,性别
首先取Student表中的一个元组,
然后在SC表中依次找SC.Sno=该元组的So,
并且对应的Cno='2',
如果存在,则外层查询的where子句返回为真,
则Student表中的该元组可以输出。
然后依次遍历Student表中的其他元组。
新建表:
(1)Student
So Sname Ssex Sage
1511010100 小明 男 10
1511010101 小粒 男 11
1511010102 小花 女 12
1511010103 小莉 女 13
(2)Course
Cno Cname Ccre Credit
1 JAVA 2 2
2 C 2 2
3 ANDROID 4 4
4 SQL 3 3
5 PASCAL 2 2
(3)
SC
Sno Cno Credit
1511010100 2 96
1511010101 2 98
1511010100 1 90
1511010104 3 98
1511010102 4 97
查询:
对于在学生表中学号等于151010100这个元组,在SC表中第一条记录即符合条件,然后where 子句返回 true,所以该条元组可以输出。然后依次遍历。
select Sname,Sage,Ssex from Student where exists ( select * from SC where SC.Sno = Student.So AND Cno='2' );
结果:
Sname Sage Ssex
小明 10 男
小粒 11 男