关系代数、SQL查询测验答案
设有STUDENT数据库,包括S、SC、C三个关系模式:
S(SNO,SNAME,SEX,AGE);
SNO学生学号, SNAME学生姓名, AGE 学生年龄 SEX 学生性别(用字母F代表女,用字母M代表男)
SC(SNO,CNO,GRADE);
SNO 学生学号,CNO 课程号, GRADE 成绩
C(CNO,CNAME,TEACHER);
CNO课程号,CNAME 课程名,TEACHER 任课教师姓名
1请使用关系代数、SQL实现下列操作:
1) 查询MA HONG老师所授课程的课程号和课程名
2) 查询至少选修LI XI老师所授课程中一门课程的女生姓名
3) 查询WANG GANG同学不学的课程的课程号
4) 查询选修课程包含LI XI老师所授全部课程的学生学号。
2请使用SQL语言表达下列操作:
1) 统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数
降序排列,若人数相同,按课程号升序排列。
2) 检索姓名以M打头的所有学生的姓名和年龄。
3) 求年龄大于所有女同学年龄的男学生姓名和年龄。
4) 把低于所有课程总平均成绩的男同学成绩提高3%。
5) 从SC关系中删除C2的记录,并从C关系中删除相应的记录。
6) 将学生的学号和他的平均成绩定义一个视图
1.①π
②π
③π) CNO,CNAME(σTEACHER=’MA HONG’(C)) SNAME(σSEX=’F’∧TEACHER=’LI XI’(S SC C)) CNO(C)-πCNO(σSANME=’WANG GANG’(S SC)
④πSNO,CNO(SC)÷πCNO(σTEACHER=’LI XI’(C))
①SELECT CNO,CNAME FROM C WHERE TEACHER=’MA HONG’
②SELECT SNAME FROM S,SC,C WHERE S.SNO=SC.SNO AND O=O AND SEX=’F’AND TEACHER=’LI XI’
③SELECT CNO FROM C WHERE NOT EXISTS
(SELECT * FROM SC,S
WHERE SC.SNO=S.SNO AND O=O AND
SNAME=’WANG GONG)’
⑷ select sno from S where not exists
Select * from C where teacher=’LI XI’and not exists
Select * from SC where cno=o and sno=S.sno
2(1)SELECT CNO,COUNT(SNO) FROM SC
GROUP BY CNO
HAVING COUNT(*)>10
ORDER BY 2 DESC,1
(2)SELECT SNAME,AGE FROM S
WHERE SNAME LIKE ’M%’
(3)SELECT SNAME,AGE FROM S
WHERE SEX=’M’
AND AGE > ALL(SELECT AGE FORM S
WHERE SEX=’F’)
(4)UPDATE SC SET GRADE=GRADE*1.03
WHERE SNO IN(SELECT SNO FROM S WHERE SEX=’M’)
AND GRADE<(SELECT AVG(GRADE) FROM SC)