现有关系数据库模式如下: 学生表(学号,姓名,性别,年龄、专业) 课程表(课程号,课程名,任课教师姓名) 选修表(学号,课程号,分数) 请用关系代数实现下列各小题: 1)检索至少选修了李明老师所教授全部课程的学生的学号、姓名、专业。 2)检索没有任何一门课程成绩在90分以下的学生的学号、姓名、专业。 3)检索至少选修课程包含学号为5的学生所选课程的学生学号。 4)检索全部学生都选修的课程号和课程名。
时间: 2023-05-22 17:04:34 浏览: 176
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(*) 函数用于计算每个组内的记录数。
Table1:学生表(学号,姓名,年龄,性别) Student (s_no, sname, sage, sex) Table2:课程表(课程编号,课程名,任课教师) Course(c_no,cname,t_no) Table3:成绩表(学号,课程编号,成绩) Sc(s_no,c_no,score) Table4:教师表(教师编号,教师姓名) Teacher(t no,tname) 根据要求写出sql语句: 1、查询“001 ”课程比“002 ”课程成绩高的全部学生的学号。
```
SELECT Sc.s_no
FROM Sc
WHERE Sc.c_no = '001' AND Sc.score > (SELECT score FROM Sc WHERE c_no = '002' AND s_no = Sc.s_no);
```
阅读全文