针对教材中的学生—课程数据库,用关系代数完成以下操作:
1、查询“CS”系所有学生的学号和姓名。
П sno,sname (σsdept=’CS’(student))
2、查询年龄超过18岁的男生的姓名及所在系。
П sname,sdept (σssex=’男’∧ sage>18 (student))
3、查询年龄在18至20岁之间的学生信息。
П *(σsage>=18 ∧ sage<=20 (student))
4、查询不在“CS”系也不在“MA”系的学生的所有信息。
П *((σsdept(student))-(σsdept=’CS’(student))- (σsdept=’MA’(student)))
П *( σsdept <> ’CS’∧ sdept <> ’MA’ (student))
5、查询“CS”系所有学生的平均年龄。
ПAvg (sage) (σsdept=’CS’(student))
6、查询没有先行课的课程名。
П cname (σcpno=’NULL’(course))
7、查询先行课为“6”号课程的课程信息。
П * (σcpno=’6’(course))
8、查询间接先行课为“5”号课程的课程号及课程名。
П o,ame( σ b.cpno = 5 (couse (a)⋈couse(b))
9、查询选修了“1”号课程的学生选课信息。
П sno,cno(sc) ÷Пcno=’1’(sc)⋈П sno,cno(sc)
10、查询成绩为90分以上的学生姓名和课程名。
П sname,cname (σgrade>'90'(student ⋈sc ⋈course))
11、对student及sc表做等值连接。
student ⋈student.sno=sc.sno sc
12、对student及sc表做自然连接。
Student ⋈ sc
13、查询“李勇”同学所选课程的平均成绩。
П Avg (grade) (σsname=’李勇(student ⋈sc))
14、查询“操作系统”这门课的最高分及最低分。
П max (grade) ,min (grade) ( σcname=’操作系统’ (course ⋈ sc )) 15、查询被选修了的课程号及课程名。
П cno,cname(course ⋈ sc)
16、查询没有选修课程的学生学号及姓名。
П sno,sname(student)- П sno(sc)
17、查询没有选修“1”号课程的学生姓名。
П sname(student)- πsname(σcno=’1’(sc⋈student)
18、查询既选修了“数据结构”又选修了“操作系统”的学生姓名。
П sname(σcname=’操作系统’∧cname=’数据结构’(sc⋈student⋈course)19、查询既选修了“2”号又选修了“4”号课程的学生学号。
П sname(σcno=2 ∧cno =4(sc⋈student)
20、查询选修了“2”号或“4”号课程的学生学号。
П sno(σcno=2 v cno =4(sc⋈student)
21、查询至少选修了“95002”学生所选课程的学生学号。
П sno,cno(sc)÷П cno(σsno=’95002’(sc))
22、查询至少选修了一门其间接先行课为“7”号课程的学生姓名。
Пsname(П o( σ b.cpno = 7 (couse (a)⋈couse(b)) ⋈sc ⋈П
sno,sname(student))
23、查询选修了所有课程的学生姓名。
П sname( П sno,cno(sc) ÷Пcno(course) ⋈П sno,sname(student)) 24、查询“CS”系的所有学生的学号、姓名、课程名及成绩。
П sno,sname,cname,grade(σsdept=’CS’(student⋈sc⋈course)
25、查询“CS”系选修课程的成绩在90分以上的所有女生的姓名、课程名和成绩。
Пsname,cname,grade(σsdept=’CS’∧grade>90 ∧ ssex='女' (student⋈sc ⋈coure) )。