关系代数运算转成SQL语句

关系代数运算(如选择、投影、连接、并、差、笛卡尔积等)转化为 SQL语句 是数据库学习的重要内容。下面是系统总结,包含常见运算及其对应的 SQL 写法。


✅ 1. 投影(π):选择列

关系代数:

π<列1,列2>(R)

SQL:

SELECT1,2 FROM R;

✅ 2. 选择(σ):选择行(加条件)

关系代数:

σ<条件>(R)

SQL:

SELECT * FROM R WHERE 条件;

示例:

σ salary > 5000 (Employee)
→
SELECT * FROM Employee WHERE salary > 5000;

✅ 3. 笛卡尔积(×)

关系代数:

R × S

SQL:

SELECT * FROM R, S;
-- 或
SELECT * FROM R CROSS JOIN S;

✅ 4. 连接(⨝):按条件连接两个关系

关系代数(等值连接):

R ⨝ R.a = S.b S

SQL:

SELECT * FROM R JOIN S ON R.a = S.b;

如果是自然连接(NATURAL JOIN),SQL 也有支持:

SELECT * FROM R NATURAL JOIN S;

✅ 5. 并(∪)

关系代数:

R ∪ S

SQL:

SELECT * FROM R
UNION
SELECT * FROM S;

要求列数、列类型一致。


✅ 6. 差(−)

关系代数:

R − S

SQL:

SELECT * FROM R
EXCEPT
SELECT * FROM S;

在某些数据库中(如 MySQL),没有 EXCEPT,需要用 LEFT JOIN + WHERE IS NULL 实现。


✅ 7. 交(∩)

关系代数:

R ∩ S

SQL:

SELECT * FROM R
INTERSECT
SELECT * FROM S;

有的数据库不支持 INTERSECT,也可通过 INNER JOIN 实现。


✅ 8. 重命名(ρ)

关系代数:

ρ S(a1, a2) (R)

SQL:

SELECT1 AS a1,2 AS a2 FROM R AS S;

✅ 总结:关系代数到 SQL 对照表

关系代数运算SQL 对应语句
投影 πSELECT 列
选择 σWHERE 条件
笛卡尔积 ×CROSS JOIN / 直接列出多个表
连接 ⨝JOIN … ON …
自然连接NATURAL JOIN
并 ∪UNION
差 −EXCEPT / NOT IN / LEFT JOIN
交 ∩INTERSECT
重命名 ρAS

好的,我们通过一个具体的关系代数表达式,完整举例说明如何将其转换为 SQL 语句。


🧩 例子背景:两个关系

假设我们有两个表:

Student(sid, name, age, dept_id)
Department(dept_id, dept_name)

🎯 关系代数表达式:

查询计算机系(“Computer Science”)所有学生的学号和姓名

关系代数写法:

π sid, name (σ dept_name = 'Computer Science' (Student ⨝ Student.dept_id = Department.dept_id Department))

✅ 转换为 SQL:

SELECT s.sid, s.name
FROM Student s
JOIN Department d ON s.dept_id = d.dept_id
WHERE d.dept_name = 'Computer Science';

🧠 分步解释:

步骤关系代数SQL 表达式
1. 连接Student ⨝ ... DepartmentJOIN Department d ON s.dept_id = d.dept_id
2. 筛选σ dept_name = '...' (...)WHERE d.dept_name = 'Computer Science'
3. 投影(列筛选)π sid, name (...)SELECT s.sid, s.name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值