上海大学数据库上机作业上机练习5作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上大学数据库上机作业

《数据库系统与应用》上机习题*************************************************************************************************

第五部分、SQL高级应用

一、做书上第十章的例题

二、利用上次上机的学生_课程数据库

1. 求选修了高等数学的学生学号和姓名。

USE学生课程

SELECT学生.学号,姓名,选课.课程号

FROM学生,选课,课程

WHERE学生.学号=选课.学号AND课程.课程号=选课.课程号AND课程名='高等数学'

2.求C1课程的成绩高于张三的学生学号和成绩。

USE学生课程

SELECT x.学号,x.成绩

FROM选课x,选课y

WHERE x.课程号='C1'AND x.成绩>y.成绩AND y.学号='S4'AND y.课程号='C1'

ORDER BY x.学号DESC

第二种:

USE学生课程

SELECT学号,成绩

FROM选课

WHERE课程号='C1'AND成绩>(SELECT成绩FROM选课,学生WHERE课程号='C1'

AND姓名='张三'AND选课.学号=学生.学号)

3.求其他系中比自动化学院某一学生年龄小的学生。

USE学生课程

SELECT学号,姓名,年龄,单位

FROM学生

WHERE年龄<(SELECT MAX(年龄)FROM学生

WHERE单位='自动化学院')AND单位!='自动化学院'

ORDER BY学号DESC

4.求其他系中比自动化学院学生年龄都小的学生。

USE学生课程

SELECT学号,姓名,年龄,单位

FROM学生

WHERE年龄<(SELECT MIN(年龄)FROM学生

WHERE单位='自动化学院')AND单位!='自动化学院'

ORDER BY学号DESC

5.求选修了C2课程的学生的姓名。

USE学生课程

SELECT姓名

FROM学生,选课

WHERE学生.学号=选课.学号AND课程号='C2'

6.求没有选修C2课程的学生的姓名。

USE学生课程

SELECT DISTINCT姓名

FROM学生,选课

WHERE学生.学号=选课.学号AND姓名not in(SELECT姓名

FROM学生,选课WHERE学生.学号=选课.学号AND选课.课程号='C2')

7.查询选修了C1、C2、C3、C7全部四门课程的学生的姓名。

USE学生课程

SELECT姓名

FROM学生

WHERE学号in(SELECT学号FROM选课WHERE课程号='C1')

AND学号in(SELECT学号FROM选课WHERE课程号='C2')

AND学号in(SELECT学号FROM选课WHERE课程号='C3')

AND学号in(SELECT学号FROM选课WHERE课程号='C7')

第二种:

USE学生课程

SELECT姓名

FROM学生,选课

WHERE学生.学号=选课.学号AND课程号in('C1','C2','C3','C7')

GROUP BY姓名

HA VING COUNT(*)=4

8.求至少选修了学号为S2的学生所选修的全部课程的学生的学号和姓名。USE学生课程

SELECT学生.学号,姓名

FROM学生,选课

WHERE学生.学号=选课.学号AND选课.课程号

in(SELECT课程号FROM选课WHERE学号='S2')

AND选课.学号!='S2'

GROUP BY学生.学号,姓名

HA VING COUNT(选课.学号)

>=(SELECT COUNT(*)FROM选课WHERE学号='S2')

9.选修了C1课程,同时也选修C2课程的学生学号。

USE学生课程

SELECT学号

FROM选课

WHERE课程号='C1'AND学号in(SELECT学号FROM选课WHERE课程号='C2') 10.求学生总人数。

USE学生课程

SELECT COUNT(学号)AS总人数

FROM学生

11.求课程和选修该课程的人数。

USE学生课程

SELECT选课.课程号,课程名,COUNT(学号)AS选修该课程人数

FROM选课,课程

WHERE选课.课程号=课程.课程号

GROUP BY选课.课程号,课程名

12.求选修课超过3门的学生学号。

USE学生课程

SELECT学号,COUNT(课程号)AS选课数

FROM选课

GROUP BY学号

HA VING COUNT(课程号)>3

13.编写一个程序,计算各学院的总人数及男女生的人数,生成下图的查询。

USE学生课程

SELECT单位,COUNT(*)AS总人数,

SUM(CASE性别WHEN'男'THEN 1 ELSE 0 END)AS男生人数,

SUM(CASE性别WHEN'女'THEN 1 ELSE 0 END)AS女生人数

FROM学生

GROUP BY单位

相关文档
最新文档