目标一文彻底掌握软考上午题中“关系代数”所有高频考点。包含并、交、差、笛卡尔积、选择、投影、连接、除八大运算的符号、定义、适用条件、计算方法与典型例题。配学生选课实例和软考风格练习题看完这篇无需再翻其他资料。一、关系代数概述关系代数是一种过程化查询语言以关系为运算对象通过对关系进行一系列运算得到查询结果。关系代数是SQL语言的理论基础也是软考数据库部分必考内容。1. 运算分类基本运算并、差、笛卡尔积、选择、投影。导出运算交、连接、除可由基本运算组合得到。2. 并相容性并、交、差运算要求两个关系满足并相容具有相同的属性个数元数相同。对应属性的域相同或可兼容。3. 常用符号运算符号含义并R ∪ S两个关系的所有元组合并交R ∩ S两个关系中共有的元组差R − S在R中但不在S中的元组笛卡尔积R × S两个关系元组的全组合选择σ_条件®按条件筛选行投影π_属性®选择指定列并去重连接R ⋈_条件 S按条件连接两个关系自然连接R ⋈ S按同名属性等值连接并去重列除R ÷ S求“包含所有”的元组二、并、交、差1. 并Union定义R ∪ S { t | t ∈ R 或 t ∈ S }要求R和S并相容。结果包含R和S中的所有元组重复元组只保留一个。示例R(A,B): (1,2), (2,3), (3,4) S(A,B): (1,2), (2,3), (4,5) R ∪ S (1,2), (2,3), (3,4), (4,5)2. 交Intersection定义R ∩ S { t | t ∈ R 且 t ∈ S }要求R和S并相容。结果同时出现在R和S中的元组。示例R ∩ S (1,2), (2,3)3. 差Difference定义R − S { t | t ∈ R 且 t ∉ S }要求R和S并相容。结果在R中出现但不在S中出现的元组。示例R − S (3,4) S − R (4,5)软考常考并、交、差要求并相容差运算不满足交换律。三、笛卡尔积Cartesian Product定义R × S { t_R t_S | t_R ∈ R 且 t_S ∈ S }结果属性R的属性 S的属性若属性名冲突需加前缀区分。结果元组数|R| × |S|。示例R(A,B): (1,2), (2,3) S(C,D): (5,6), (7,8) R × S 结果属性为 (A,B,C,D)共4个元组 (1,2,5,6) (1,2,7,8) (2,3,5,6) (2,3,7,8)软考常考笛卡尔积结果元组数等于两个关系元组数之积结果属性为两个关系属性之和。四、选择与投影1. 选择Selection定义σ_条件® { t | t ∈ R 且 t 满足条件 }作用从关系中筛选出满足条件的行元组。条件可用 、≠、、≤、、≥ 及逻辑运算符 ∧、∨、¬。示例R(A,B): (1,2), (2,3), (3,4) σ_{A1}(R) (2,3), (3,4) σ_{A2 ∧ B3}(R) (2,3)2. 投影Projection定义π_属性列表® { t[属性列表] | t ∈ R }作用从关系中选出指定的列并去除重复元组。示例R(A,B): (1,2), (2,3), (3,4), (4,3) π_A(R) (1), (2), (3), (4) π_B(R) (2), (3), (4)软考常考选择是行运算投影是列运算投影结果自动去重。五、连接Join连接是将两个关系的元组按一定条件拼接成新元组。1. θ连接Theta Join定义R ⋈_{条件} S σ_{条件}(R × S)条件可以是 、、 等比较运算。结果先做笛卡尔积再按条件筛选。示例R(A,B): (1,2), (2,3) S(B,C): (2,5), (3,6), (4,7) R ⋈_{R.B S.B} S 结果属性 (A,B,B,C)满足条件的元组 (1,2,3,6) // 23 (1,2,4,7) // 24 (2,3,4,7) // 342. 等值连接Equi-Join定义θ连接中条件为等号的情况。示例R ⋈_{R.BS.B} S结果保留两个B列。3. 自然连接Natural Join定义R ⋈ S按两个关系中所有同名属性进行等值连接并去掉重复属性列。要求两个关系有同名属性。示例R(A,B): (1,2), (2,3), (3,4) S(B,C): (2,5), (3,6), (4,7) R ⋈ S (1,2,5), (2,3,6), (3,4,7)结果属性为 (A,B,C)B列只保留一个。4. 连接类型对比连接条件结果属性是否去重列θ连接任意条件R属性S属性否等值连接等号条件R属性S属性否自然连接同名属性相等去掉重复列是软考常考自然连接与等值连接的区别自然连接结果属性数 R属性数 S属性数 − 同名属性数。六、除Division定义R(X,Y) ÷ S(Y) { x | 对所有 y ∈ S都有 (x,y) ∈ R }结果属性X即R中除去S属性后的属性。用途解决“包含所有”“选修了全部课程”等查询。示例R(A,B): (1,2), (1,3), (2,3), (3,2), (3,3) S(B): (2), (3) R ÷ S (1), (3)解释A1 对应 B2,3包含S中所有BA3 对应 B2,3也包含A2 只对应 B3不包含B2所以排除。软考常考除法用于“全部”“所有”语义结果属性为R属性减去S属性。七、综合例题例题1学生选课数据库设学生 S(学号, 姓名, 性别, 年龄)课程 C(课程号, 课程名, 学分)选课 SC(学号, 课程号, 成绩)查询1查询选修了“数据库”课程的学生姓名。π_{姓名}(σ_{课程名数据库}(S ⋈ SC ⋈ C))或π_{姓名}(S ⋈ SC ⋈ σ_{课程名数据库}(C))查询2查询选修了全部课程的学生学号。π_{学号,课程号}(SC) ÷ π_{课程号}(C)查询3查询至少选修了课程号为“C01”和“C02”的学生学号。π_{学号}(σ_{课程号C01}(SC)) ∩ π_{学号}(σ_{课程号C02}(SC))例题2计算关系代数表达式给定R(A,B): (1,2), (2,3), (3,4) S(B,C): (2,5), (3,6), (4,7)求R ∪ S不满足并相容属性不同不能直接并。π_A® (1),(2),(3)σ_{B2}® (2,3),(3,4)R ⋈ S (1,2,5),(2,3,6),(3,4,7)R × S 结果元组数 3×39。八、软考常见题型与技巧题型一判断表达式含义例题表达式 π_{学号}(σ_{成绩90}(SC)) 的含义是 。A. 查询成绩大于90的学生学号B. 查询所有学生学号C. 查询成绩大于90的课程号D. 查询选修了课程的学生学号答案A题型二根据需求写关系代数例题查询没有选修任何课程的学生学号。π_{学号}(S) − π_{学号}(SC)题型三计算表达式结果例题R(A,B): (1,2),(2,3),(3,4)S(B,C): (2,5),(3,6)。求 R ⋈ S。答案(1,2,5),(2,3,6)题型四除法应用例题查询选修了全部课程的学生姓名。π_{姓名}(S ⋈ (π_{学号,课程号}(SC) ÷ π_{课程号}(C)))九、易错点与注意事项并、交、差必须并相容否则不能运算。投影会自动去重选择不会。自然连接去掉重复属性列等值连接保留。笛卡尔积结果元组数 |R| × |S|属性数 R属性数 S属性数。除法用于“包含所有”结果属性为R属性减去S属性。差运算不满足交换律R−S ≠ S−R。连接条件中属性名冲突需加关系名前缀。关系代数表达式可以嵌套先内层后外层。并、交、差的结果属性名继承第一个关系。SQL与关系代数对应SELECT对应投影WHERE对应选择JOIN对应连接。十、总结与速记速记1八大运算运算符号作用关键点并∪合并元组并相容交∩公共元组并相容差−去掉公共并相容不交换笛卡尔积×全组合元组数相乘选择σ选行条件筛选投影π选列自动去重连接⋈按条件拼接自然连接去重列除÷包含所有结果属性为差集速记2核心区别选择行投影列。自然连接去重列等值连接不去。除法对应“全部”“所有”。并交差要并相容。速记3常用表达式没有选修任何课程π_{学号}(S) − π_{学号}(SC)选修了全部课程π_{学号,课程号}(SC) ÷ π_{课程号}©选修了“数据库”的学生姓名π_{姓名}(S ⋈ SC ⋈ σ_{课程名‘数据库’}©)掌握以上内容配合历年真题练习关系代数部分即可轻松得分。建议重点练习根据需求写关系代数表达式、自然连接结果计算和除法应用。发布日期2026-09-23下期预告数据库系统——SQL语言DDL、DML、DCL、查询敬请关注。