数据库系统原理——习题

已知关系模式:

学生 S(SNO,SNAME,AGE,SEX,SDEPT)

课程 C(CNO,CNAME,CDEPT,TNAME)

选修 SC(SNO,CNO,GRADE)

写出SQL语句。

1.检索至少选修两门课程的学生学号。

SELECT DISTINCT SC1.SNO FROM SC AS SC1,SC AS SC2
WHERE SC1.SNO = SC2.SNO
AND SC1.CNO <> SC2.CNO;

或者

SELECT SNO FROM SC
GROUP BY SNO
HAVING COUNT(DISTINCT CNO) >= 2;

2.统计有学生选修的课程门数。

SELECT COUNT(DISTINCT CNO) FROM SC; 

3.选修C4课程的学生的平均年龄。

SELECT AVG(AGE) FROM S,SC
WHERE S.SNO = SC.SNO
AND SNO = 'C4';

4.求LIU老师所授课程的每门课程的学生平均成绩。

SELECT SC.CNO,CNAME,AVG(GRADE) FROM SC,C
WHERE SC.CNO = C.CNO
AND TNAME = 'LIU'
GROUP BY SC.CNO,CNAME;

5.统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

SELECT CNO,COUNT(SNO) FROM SC
GROUP BY CNO
HAVING COUNT(*) > 10
ORDER BY 2 DESC,1;

6.检索LIU老师所授课程的课程号,课程名。

SELECT CNO,CNAME FROM C
WHERE TNAME = 'LIU';

7.检索年龄大于23岁的男同学的学号和姓名。

SELECT SNO,SNAME FROM S
WHERE AGE > 23
AND SEX = '男';

8.检索学号为S3学生所学课程的课程名和任课教师名。

SELECT CNAME,TNAME FROM C,SC
WHERE C.CNO = SC.CNO
AND SC.SNO = 'S3';

或者

SELECT CNAME,TNAME FROM C
WHERE CNO IN(
SELECT CNO FROM SC
WHERE SNO = 'S3'
);

9.检索至少选修LIU老师所授课程中一门课的女学生的姓名。

SELECT SNAME FROM S,SC,C
WHERE S.SNO = SC.SNO
AND C.CNO = SC.CNO
AND TNAME = 'LIU'
AND SEX = '女';

10.检索WAN同学不学的课程的课程号。

SELECT CNO FROM C
WHERE CNO NOT IN(
SELECT SC.CNO FROM S,SC
WHERE S.SNO = SC.SNO
AND S.SNAME = 'WAN'
);
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值