现有关系数据库如下: 学生(学号,姓名,性别,专业) 课程(课程号,课程名,学分) 学习(学号,课程号,分数) 分别用关系代数表达式和 SQL 语句实现下列 1—5 小题(注意:每小题都要分别 写出关系代数表达式和 SQL 语句!!!每小题关系代数表达式 2 分,SQL 语句 2 分):
1. 检索所有选修了课程号为 “ C112的课程的学生的学号和分数; ”
2. 检索 “英语 ”专业学生所学课程的信息,包括学号、姓名、课程名和分数;
3. 检索 “数据库原理 ”课程成绩高于 90 分的所有学生的学号、 姓名、专业和分数;
4. 检索没学课程号为 “ C135课程的学生信息,包括学号,姓名和专业; ”
5. 检索至少学过课程号为 “ C135和”“ C219的课程的学生的信息,包括学号、姓 ” 名和专业。
答案:
1.SQL 语句: SELECT 学号 ,分数 FROM 学习 WHERE 课程号 =’ C112’
关系代数: π学号,分数 (
课程号=’C112’(学习 ))
2. SQL 语句: SELECT 学生 .学号 ,姓名 ,课程名 ,分数 FROM 学生 ,学习 ,课程 WHERE 学习 .学号 =学生 .学号 AND 学习 .课程号 =课程 .课程号 AND 专业 =’英语 ’
关系代数: π学号,姓名,课程名,分数 (π学号,姓名 (
专业=’英语’(学生 ))
学习
π课程号,课程名 (课 程))
3. SQL 语句: SELECT 学生 .学号 ,姓名 ,专业 ,分数 FROM 学生 ,学习 ,课程 WHERE 学生 .学号 =学习 .学号 AND 学习 .课程号 =课程 .课程号 AND 分数 >90 AND 课程名 =‘数据库原理 ’
关系代数: π学号,姓名,专业 ,分数(π学号,姓名,专业(学生 )
(
分数>90(学习 ))
π课程号,课程名 ( 课程名 =’数据库原理 ’(课程 )))
4.SQL 语句: SELECT 学号 ,姓名 ,专业 FROM 学生 WHERE 学号 NOT IN
( SELECT 学号 FROM 学习 WHERE 课程号 =‘C135’)
关系代数:(π学号(学生 )-π学号(
课程号 =‘C135’ (学习 )))
(π学号,姓名,专业 (学生 ))
5.SQL 语句: SELECT 学号 ,姓名 ,专业 FROM 学生 WHERE 学号 IN ( SELECT X1. 学号 FROM 学习 X1 ,学习 X2 WHERE X1.学号 =X2. 学号 AND X1. 课程号 =‘ C135’ AND X2.课程号 =‘ C219)’
关系代数:(π学号,课程号 (学习 )÷π课程号 (
课程号 =‘C135’∨课程号 =‘C219’(课程 )))
π学号 ,姓名,专 业(学生 )