场景:
提示:这里简述项目相关背景:
4.10专升本数据库原理练习
题目
现有关系数据库如下:
学生(学号,姓名,性别,专业)
课程(课程号,课程名,学分)
学习(学号,课程号,分数)
分别用关系代数表达式和 SQL 语句实现下列 1—5 小题(注意:每小题都要分别写出关系代
数表达式和 SQL 语句!!!每小题关系代数表达式 2 分,SQL 语句 2 分):
1. 检索所有选修了课程号为“C112”的课程的学生的学号和分数;
2. 检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数;
3. 检索“数据库原理”课程成绩高于 90 分的所有学生的学号、姓名、专业和分数;
4. 检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专业;
5. 检索至少学过课程号为“C135”和“C219”的课程的学生的信息,包括学号、姓名和专业。
答案
-- 1. 检索所有选修了课程号为“C112”的课程的学生的学号和分数;
π 学号, 分数 (σ课程号='C112' (学习)) --关系代数表达式
SELECT 学号, 分数 FROM 学习 WHERE 课程号 = 'C112'; -- 用 SQL 语言实现
-- 2. 检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数;
π 学号, 姓名,课程名, 分数 (学生 ⋈ (σ专业='英语' (学习 ⋈课程)))--关系代数表达式
select 学号,姓名,课程名,分数 from 学生 join 课程 join 学习 where 专业="英语"; -- 用 SQL 语言实现
-- 3.检索“数据库原理”课程成绩高于 90 分的所有学生的学号、姓名、专业和分数;
π 学号, 姓名,专业, 分数 (学生 ⋈ (π 学号, 分数 (σ课程名='数据库原理'课程 ⋈ 学习)) ⋈ σ 分数 >90 (π 学号, 分数 (σ课程名='数据库原理'课程 ⋈ 学习)))--关系代数表达式
select 学号,姓名,专业,分数 from 学生 join 学习 on 学生.学号 = 学习.学号 join 课程 on 学习.课程号 = 课程.课程号 where 课程.课程名 = '数据库原理' and 分数 > 90; -- 用 SQL 语言实现
-- 4. 检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专业;
π 学号, 姓名,专业 (学生 - π 学号, 姓名,专业 ((σ课程号='C135' 学习) ⋈ 学生))--关系代数表达式
select 学号,姓名,专业 from 学生 join 课程 on 学生.学号 = 学习.学号 where 学生.学号 not in (select 学号 from 学习 where 课程号 = 'C135'); -- 用 SQL 语言实现
-- 5. 检索至少学过课程号为“C135”和“C219”的课程的学生的信息,包括学号、姓名和专业。
π 学号, 姓名,专业 (σ 学号 IN (σ课程号='C135' 学习)∩(σ课程号='C219' 学习) (π 学号 (学习) ⋈ 学生))--关系代数表达式
select 学号,姓名,专业 from 学生 join 学习 on 学生.学号 = 学习.学号 where 课程号 in ('C135', 'C219') group by 学号, 姓名, 专业 having count(distinct 课程号) = 2; -- 用 SQL 语言实现