五个基本操作:并,差,笛卡尔积,选择,投影{∪,-,× , σ,Π }
并运算的结果要消除重复的元组
选择:水平分割
投影:垂直分割,要取消某些重复的行
组合操作:
1)交集运算
2)连接(Join)运算,连接操作是笛卡尔积和选择操作的组合
条件连接
自然连接(重复的属性列去掉)
半连接
3)除法运算(Division)
举例:
S(SNO,SNAME,AGE,SEX,DNAME)
C(CNO,CNAME,PRE_CNO,TEACHER)
SC(SNO,CNO,SCORE)
(1)检索“陈军”老师所授课程的课程号(CNO)和课程名(CNAME)
∏CNO, CNAME(σTEACHER=’陈军’(C))
(2)检索年龄大于21的男学生学号(SNO)和姓名(SNAME)
∏SNO,SNAME(σAGE>21 ∧ SEX=’男’ (S))
(3)检索至少选修“陈军”老师所授全部课程的学生姓名(SNAME)
∏SNAME(S⋈(∏SNO, CNO(SC) ÷ ∏CNO(σTEACHER=’陈军’(C))
(4)检索“李强”同学不学课程的课程号(CNO)
∏CNO(C)-∏CNO(σSNAME=’李强’(S)⋈SC)
(5)检索至少选修两门课程的学生学号(SNO)
∏SNO(σ1=4 ∧ 2≠5 (SC×SC))
(6)检索全部学生都选修的课程的课程号(CNO)和课程名(CNAME)
∏CNO, CNAME(C⋈(∏SNO, CNO(SC)÷∏SNO(S))
(7)检索选修课程包含“陈军”老师所授课程之一的学生学号(SNO)
∏SNO(SC⋈∏CNO(σTEACHER=’陈军’(C))
(8)检索选修课程号为k1和k5的学生学号(SNO)
∏SNO, CNO(SC)÷∏CNO (σCNO=’k1’ ∨ CNO=’k5’ (C))
(9)检索选修全部课程的学生姓名(SNAME)
∏SNAME(S⋈(∏SNO, CNO (SC) ÷ ∏CNO(C)))
(10)检索选修课程包含学号为S2的学生所修课程的学生学号(SNO)
∏SNO, CNO(SC)÷∏CNO(σSNO=’S2’(SC))
(11)检索选修课程名为“C语言”的学生学号(SNO)和姓名(SNAME)
∏SNO, SNAME(S⋈(∏SNO(SC⋈(σCNAME=’C语言’(C)))))