设有如下所示的关系S(S# ,SNAME,AGE,SEX). C(C#,CNAME,TEACHER)和SC(S#, ,C#,GRADE), 用SQL语句表示以下查询。 (1)检索选修课程名称为"MATHS"的学生的学号 与姓名 (2)检索至少学习了课程号为"C1"和“C2"的学 生的学号 (3)检索年龄在18到20之间(含18和20)的女生的学 号、姓名和年龄 (4)检索平均成绩超过80分的学生学号和平均成绩 (5)检索选修了全部课程的学生姓名的代码
时间: 2024-03-30 13:34:08 浏览: 22
(1) SELECT S.S#, S.SNAME FROM S, SC, C WHERE S.S# = SC.S# AND SC.C# = C.C# AND C.CNAME = 'MATHS';
(2) SELECT S.S# FROM S, SC WHERE S.S# = SC.S# AND SC.C# IN ('C1', 'C2') GROUP BY S.S# HAVING COUNT(DISTINCT SC.C#) = 2;
(3) SELECT S.S#, S.SNAME, S.AGE FROM S WHERE S.AGE BETWEEN 18 AND 20 AND S.SEX = '女';
(4) SELECT SC.S#, AVG(SC.GRADE) AS AVERAGE_GRADE FROM SC GROUP BY SC.S# HAVING AVG(SC.GRADE) > 80;
(5) SELECT S.SNAME FROM S WHERE NOT EXISTS (SELECT C.C# FROM C WHERE NOT EXISTS (SELECT SC.C# FROM SC WHERE SC.S# = S.S# AND SC.C# = C.C#));
相关问题
设有3个关系: S(S#,SNAME,SEX,AGE) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 试用关系代数表达式表示下列查询语句:(1)~(8)小题
(1) 查询所有学生的姓名和年龄:
π SNAME, AGE (S)
(2) 查询选了课程C1并且成绩不低于80分的学生的学号和姓名:
π S# SNAME (σ C#='C1' ∧ GRADE>=80 (SC ⨝ S))
(3) 查询选了课程C1或C2并且成绩不低于80分的学生的学号和姓名:
π S# SNAME (σ (C#='C1' ∨ C#='C2') ∧ GRADE>=80 (SC ⨝ S))
(4) 查询没有选课程的学生的学号和姓名:
π S# SNAME (S - π S# (SC ⨝ S))
(5) 查询至少选了两门课程的学生的学号和姓名:
π S# SNAME (σ COUNT(C#)≥2 (SC ⨝ S) ⨝π S# (SC))
(6) 查询选修了张老师教授的课程的学生的学号和姓名:
π S# SNAME (SC ⨝σ TEACHER='张' (C))
(7) 查询选修了至少一门课程的女生的学号和姓名:
π S# SNAME (σ SEX='女' ∧ S# IN (π S# (SC ⨝ S)))
(8) 查询选修了全部课程的学生的学号和姓名:
π S# SNAME (σ COUNT(C#)=(SELECT COUNT(*) FROM C) (SC ⨝ S))
设有如下所示的关系 S(S#, SNAME, AGE, SEX) C(C#, CNAME, TEACHER) SC(S#, C#, GRADE), 试用关系代数表达式表示下列查询语句: (1)检索“程军”老师所授课程的课程号(C#)和课程名(CNAME)。
),其中 S 为学生的集合,C 为课程的集合,SC 为选课关系的集合,每个元素 s ∈S 代表一个学生,c∈C 代表一门课程,(s,c)∈SC 表示学生 s 选了课程 c。现在,给定关系 S、C 和 SC,请回答以下问题:
1. 选了至少一门课程的学生有哪些?
答: 选了至少一门课程的学生,可以通过 SC 中所有学生的集合求并得到。
2. 没有选课的学生有哪些?
答: 没有选课的学生,可以通过 SC 中所有学生的集合求差得到。
3. 只选了一门课程的学生有哪些?
答: 可以遍历 SC 中所有的学生,统计每个学生选择的课程数量,如果数量为 1,则该学生符合条件。
4. 没有选某门课程的学生有哪些?
答: 可以遍历 SC 中所有的课程,统计每门课程没有被选的学生即可。