在学生-课程数据库中,有三张表,请用关系代数表达式查询如下问题

在学生-课程数据库中,有三张表,关系模式如下:
S(sno,sname,ssex,sage,sdept)
C(cno,cname,term,credit)
SC(sno,cno,grade)
请用关系代数表达式查询如下问题:
查询年龄等于20岁的男生的学号和姓名。
查询年龄在17~23岁之间的男生的学号、姓名和年龄。
查询选修了计算机网络或数据库课程的学生学号和姓名。
查询至少选修了课程号为2和4的学生学号。
查询选修了全部课程的学生姓名和性别。
查询选修了操作系统课程的学生的学号、姓名和成绩。

自己写的,亲测可用。请给分。
3、已知三个关系模式:
学生 S(S#,SNAME,AGE,SEX),其属性的含义为:学号,姓名,年龄,性别;
学习成绩 SC(S#,C#,GRADE) ,其属性的含义为:学号,课程号,成绩;
课程 C(C#,CNAME,TEACHER),其属性的含义为:课程号,课程名,教师。
(1)请用关系代数表达式描述查询:学号为‘S2’的学生所选课程的课程号。
答: Pi C#(Delta S#=‘S2’(S))其中Pi表示投影,Delta 表示选择
(2)完善下面的SQL语句片断。
答:
CREATE TABLE SC(
S# CHAR(10),
C# CHAR(10),
GRADE NUMBER(2),
primary key (S#,C#), /*建立主码约束*/
FOREIGN KEY REFERNCES S(S#), /*在S#列上建立外码约束*/
……
)
(3)用SQL查询块描述下列查询:
学生“李勇”所选选修的课程名。
答: SELECT C.CNAME
FROM S, SC, C
WHERE S. SNAME='李勇'
AND S.S#=SC.S#
AND C.C#=SC.C#;
统计每门课程的选课人数。
答:SELECT C.CNAME, COUNT(S.S#)
FROM SC, C, S
WHERE C.C# = SC.C#
AND SC.S# = S.S#
group by C.CNAME;
在学生表中插入数据(‘1001’,‘王勇’,‘男’,19)
答:INSERT INTO S VALUES ('1001','王勇','男',19);
COMMIT;
温馨提示:答案为网友推荐,仅供参考
相似回答