现有关系数据库模式如下: 学生表(学号,姓名,性别,年龄、专业) 课程表(课程号,课程名,任课教师姓名) 选修表(学号,课程号,分数) 请用关系代数实现下列各小题: 1)检索至少选修了李明老师所教授全部课程的学生的学号、姓名、专业。 2)检索没有任何一门课程成绩在90分以下的学生的学号、姓名、专业。 3)检索至少选修课程包含学号为5的学生所选课程的学生学号。 4)检索全部学生都选修的课程号和课程名。
时间: 2023-05-22 21:04:34 浏览: 187
1)π 学号,姓名,专业 (σ 任课教师姓名='李明' ∧ 课程号 IN (SELECT 课程号 FROM 课程表 WHERE 任课教师姓名='李明')) (学生表 ⋈ 选修表) - π 学号,姓名,专业 (σ 任课教师姓名='李明' ∧ 课程号 NOT IN (SELECT 课程号 FROM 课程表 WHERE 任课教师姓名='李明')) (学生表 ⋈ 选修表)
2)π 学号,姓名,专业 (学生表 - π 学号,姓名,专业 (σ 分数 < 90 (学生表 ⋈ 选修表)))
3)π DISTINCT 选修表.学号 (SELECT 学号 FROM 选修表 WHERE 课程号 IN (SELECT 课程号 FROM 选修表 WHERE 学号=5)) (选修表)
4)π 课程号,课程名 ((SELECT 课程号 FROM 选修表 GROUP BY 课程号 HAVING COUNT(DISTINCT 学号)=(SELECT COUNT(*) FROM 学生表)) ⋈ 课程表)
相关问题
已知数据库表结构:学生(学号,姓名,年龄,性别,所在系) 课程(课程号,课程名,开课学期,任课教师) 选修(学号,课程号,成绩) 教师(工号,教师名,职称,基本工资)。请编写出 查询每个系的学生数,显示结果为系名,人数。
可以使用如下SQL语句查询每个系的学生数:
```
SELECT 学生.所在系 AS 系名, COUNT(*) AS 人数
FROM 学生
GROUP BY 学生.所在系
```
这条SQL语句会将学生表按照所在系进行分组,然后对每个组内的记录计数,最终输出系名和人数两个字段。注意,这里使用了 GROUP BY 子句来指定按照所在系进行分组,COUNT(*) 函数用于计算每个组内的记录数。
数据库 检索学号为10001学生所学课程的课程名与任课教师。
好的,假设您的数据库中有三张表,分别是students(学生表)、courses(课程表)和teachers(教师表),其中students表中有学号(id)字段,courses表中有课程编号(course_id)和课程名(course_name)字段,teachers表中有教师编号(teacher_id)和教师姓名(teacher_name)字段。
同时还有一张选课表enrollments,包含学号(student_id)和课程编号(course_id)两个字段,表示学生选修了哪些课程。您可以使用以下SQL语句检索学号为10001学生所学课程的课程名与任课教师:
```
SELECT c.course_name, t.teacher_name
FROM enrollments e
JOIN courses c ON e.course_id = c.course_id
JOIN teachers t ON c.teacher_id = t.teacher_id
WHERE e.student_id = '10001';
```
以上SQL语句中,JOIN子句用于连接表,这里是连接enrollments、courses和teachers表,使得我们可以获取到学生选修的课程信息以及课程任课教师的信息。WHERE子句用于筛选符合条件的记录,这里是筛选学号为10001的学生所选修的课程。最终SELECT子句用于指定需要查询的字段,这里是课程名和任课教师。
阅读全文
相关推荐















