关系上进行除法运算。其中,关系SC提供选修信息,而Course提供全部的课程号信息。
4) 画查询树:
图3 例题2 的查询树
5) 写出关系代数表达式:πsno,cno(SC)÷πcno(Course)。 例9 查询选修全部课程的学生号码和姓名。(结果需同时满足多个关系的时候用除法)。
πSno,Cno(SC)÷πCno(Course)πSno,Sname(Student)
六、综合实例
1、设有如下所示的关系:学生表S(S#,SNAME,AGE,SEX)、课程表C(C#,CNAME,TEACHER)和学生选课表SC(S#,C#,GRADE),其中:S#为学号,SNAME为姓名,AGE为年龄,SEX为性别,C#为课程号,CNAME为课程名,GRADE为成绩, TEACHER为教师。
(1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。 (2)检索年龄大于21的男学生学号(S#)和姓名(SNAME)。
(3)检索至少选修“程军”老师所授全部课程的学生姓名(SNAME)。 (4)检索“李强”同学不学课程的课程号(C#)。 (5)检索至少选修两门课程的学生学号(S#)。
(6)检索全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 (7)检索选修课程包含“程军”老师所授课程之一的学生学号(S#)。 (8)检索选修课程号为K1和K5的学生学号(S#)。 (9)检索选修全部课程的学生姓名(SNAME)。
(10)检索选修课程包含学号为2的学生所修课程的学生学号(S#)。 (11)检索选修课程名为“C语言”的学生学号(S#)和姓名(SNAME)。 解:本题各个查询语句对应的关系代数表达式表示如下:
(1)πC#,CNAME(σTEACHER=‘程军’(C)) (2)πS#,SNAME(σAGE>21∧SEX=‘男’(S)) (3)πSNAME(S (πS#,C#(SC)÷πC#(σTEACHER=‘程军’(C)))) (4)πC#(C)-πC#(σSNAME=‘李强’(S) SC)

