数据库查询:关系代数表达式解析

1星 需积分: 46 30 下载量 13 浏览量 更新于2024-09-03 2 收藏 68KB DOC 举报
"本资料为数据库第二章关系代数的习题,涵盖了关系代数在数据库查询中的应用,包括了多个具体查询语句的转换和解答,旨在帮助学习者掌握如何使用关系代数表达复杂的数据库查询需求。" 以下是这些习题中涉及的关系代数知识点的详细解释: 1. 查询“程军”老师所授课的课程号(C#)和课程名(CNAME)。 这个查询使用了投影(∏)和选择(δ)操作。首先通过选择操作找出TEACHER字段为“程军”的课程记录,然后对结果进行投影,只保留C#和CNAME字段。 2. 查询年龄大于21的男学生学号(S#)和姓名(SNAME)。 同样使用了选择和投影操作。选择条件是AGE>21且SEX='男',然后投影出S#和SNAME字段。 3. 查询至少选修“程军”老师所授全部课程的学生姓名(SNAME)。 此查询涉及除法(÷)操作。首先找出所有学生选修的课程与“程军”教授的课程的交集,然后对结果进行投影,得到的是选修了“程军”所有课程的学生列表。 4. 查询“李强”同学不学的课程号(C#)。 使用集合减法(-)操作,先找出所有课程号,然后减去“李强”选修的课程号,得到的结果是李强未选修的课程号。 5. 查询至少选修两门课程的学号(S#)。 这个查询使用了乘积(×)和选择操作。SC×SC得到所有可能的课程组合,然后通过选择条件判断每个学生是否选修了两门课程。 6. 查询全部学生都选修的课程的课程号(C#)和课程名(CNAME)。 首先找出所有学生的学号,然后计算所有课程与所有学生选课记录的除法,得到的结果是所有学生都选修的课程。 7. 查询选修课程包含“程军”老师所授课程之一的学生学号(S#)。 该查询通过选择操作找出包含“程军”教授课程的记录,然后进行投影得到学号。 8. 查询选修课程号为k1和k5的学生学号(S#)。 通过选择满足C#为k1或k5的记录,然后与SC表进行除法操作,找出选修这两门课程的学生学号。 9. 查询选修全部课程的学生姓名(SNAME)。 类似于第3题,但这里是找出选修所有课程的学生,即SC与C的除法结果。 10. 查询选修课程包含学号为2的学生所选修课程的学生学号(S#)。 找出学号为2的学生选修的课程,然后与SC表进行除法操作,找出选修了这些课程的所有学生。 11. 查询选修课程名为"C语言"的学生学号(S#)和姓名(SNAME)。 先找出课程名为"C语言"的记录,然后通过学号连接到SC表,再连接到S表获取学生信息。 12. 查询没有一门课程被选修的情况。 此题可能是询问没有学生选修的课程,但题目不完整,通常可以通过找出所有课程,然后减去所有学生选课的课程号来实现。 以上是关系代数在实际数据库查询中的应用,通过这些习题,学习者可以深入理解如何运用关系代数表达式解决实际问题。