type
status
date
slug
summary
tags
category
icon
password
关系代数操作符总结
一、投影操作符 (π)
功能:选择表中的指定列,删除重复元组。
SQL 对应:SELECT
示例:
关系代数表达式:
二、选择操作符 (σ)
功能:根据条件筛选表的行,保留原 schema,不需要重复删除
SQL 对应:WHERE
示例:
关系代数表达式:
复合条件 (AND, OR) 使用符号: ∧(AND),∨(OR)
练习:表达以下 SQL 查询的关系代数表达式:
答案:
三、并集操作符 (∪)
功能:合并两个关系中的所有元组,删除重复
SQL 对应:UNION
示例:
说明:两个关系必须有相同的列数和对应列类型
四、差集操作符 (-)
功能:保留第一个关系中有而第二个没有的元组
SQL 对应:EXCEPT
示例:
五、交集操作符 (∩)
功能:保留在两个关系中都出现的元组
SQL 对应:INTERSECT
示例:
六、笛卡尔积操作符 (×)
功能:生成所有元组对的组合
SQL 对应:FROM A, B
示例:
说明:基础操作,可用于实现 join
练习:给定
dogs(name, age)
和 parks(park, city)
,写出笛卡尔积的输出元组数量。假设
dogs
有 3 行,parks
有 2 行,则总共有 6 行结果。七、内连接 (⋈)
功能:按照指定条件连接两个关系
SQL 对应:JOIN ... ON ...
示例:
自然连接 (natural join) 示例:
抽象表达:
练习:
对应的关系代数表达式:
八、重命名 (ρ)
功能:重命名列或关系,避免名称冲突
SQL 对应:AS 别名
示例:
九、分组/聚合 (γ)
功能:表示 GROUP BY 和 HAVING,支持聚合函数
SQL 对应:GROUP BY, HAVING
示例1:
关系代数表达式:
示例2:
关系代数表达式:
十、实践练习(Practice Questions)
已知两个关系:
teams(teamid, name)
players(playerid, name, teamid, position)
- 查找所有打 "center" 位置球员的姓名和编号:
- 查找所有属于 "Warriors" 球队的球员姓名:
若将 players 的
teamid
重命名为 pteamid
:- 查找没有任何球员的球队编号:
- 将以下 SQL 表达式转换为关系代数:
关系代数表达式: