关系代数表达式总结
一、并
例1 求选修了课程号为1或2的课程的学生学号。 分析:可以先求出选修了课程号为1的课程的学生学号,再求出选修了课程号为2的课程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号。本例也可以使用或条件来表示。
πSno(σCno=’1’(SC))∪πSno(σCno=’2’(SC)) 或πSno(σCno=’1’∨ Cno=’2’(SC))
二、交
例2 检索至少选修课程号为2和3的课程的学生学号。 分析:
方法一:只涉及到一个表,但不能直接用∧(为什么?) 特别注意,本例不能写为:
πSno(σCno=’2’∧ Cno=’3’(SC))
因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。 第一步:转换(SC×SC)
笛卡尔积将垂直的条件展开为水平的条件。
SC1 SC2
选修课程号为2和3的学生:
σ1=4∧2=’2’∧ 5=’3’(SC×SC)
最后取出学生的学号:
π1(σ1=4∧2=’2’∧ 5=’3’(SC×SC))
方法二:πSno(σCno=’2’(SC))∩πSno(σCno=’3’(SC))
三、差
例3 将学生信息(‘95001’,’李勇’,‘男’,20,‘CS’)从Student表删除。
分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。 因此,该删除操作可表示为: Student-{‘95001’,’李勇’,‘男’,20,‘CS’}
注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。
例4 求没有选修课程号为2的课程的学生学号。 分析:可以认为是在全部学号中去掉选修课程号为2的课程的学生学号,就得出没有选修课程号为2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应当先投影,再进行差运算。
πSno(Student)- πSno(σCno=’2’(SC))

