已知关系模式:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩
要求实现如下5个处理:
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
答案:1.select s.sname from s,c,sc where s.sno=sc.sno and sc.cno=c.cno and c.cteacher !='李明'
2.
3.select s.sname from s,sc where s.sno=sc.sno and sc.cno in('1','2')
4.
5.
------解决方案--------------------
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
select sname from s where sno not in (select sno from SC ,C where SC.CNO=C.CNO and CTEACHER='李明)
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
select SNAME,avg(SCGRADE)
from S,SC
where S.SNO=sc.sno
and SNO in (select SNO from SC where SCGRADE<60 Group by SNO having count(*)>1)
3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
select SNAME
from S,SC t1,SC t2
where s.sno=t1.sno and s.sno=t2.sno
and t1.CNO=1 and t2.CNO=2
4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
select sno
from SC t1,SC t2
where t1.sno=t2.sno
and t1.CNO=1 and t2.CNO=2
and t1.SCGRADE>t2.SCGRADE
5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
select sno,t1.SCGRADE,t2.SCGRADE
from SC t1,SC t2
where t1.sno=t2.sno
and t1.CNO=1 and t2.CNO=2
and t1.SCGRADE>t2.SCGRADE
------解决方案--------------------