6.8题目:
练习5.1题目:
考虑下面的关系:
Student(snum, integer, sname string, major string, level, string, ager integer)
string, meets at, time, room: string, fid integer)
Enrolled(snum: integer, cname: string)
Faculty(fid, integer, fname, string, deptid, integer)
这些关系的含义是不言而喻的。例如 Enrolled,对于每个学生课程对都对应有一条记录,表示学生选修的课程。
用SQL写出下面的查询。结果中不能有重复的行
(1)找出选修了L. Teach所教课程的所有大三学生的名字( level=JR)
(2)找出 History专业或者选修了 L. Teach所教课程中年龄最大的学生的年龄
(3)找出在R128室上课的所有课程,或者有5个以上学生选修的所有课程的名字
(4)找出选修了两门在同一时间上课的课程的所有学生的名字
(5)找出那些在所有的教室都上过课的教师的名字
(6)找出那些所教课程选修学生的数目少于5个的教师的名字
(7)对于每个年级,打印出那个年级以及该年级的学生的平均年龄。
(8)对除了JR以外的所有年级,打印出那个年级以及该年级的所有学生的平均龄
(9)对于每个只在R128室上课的教师,打印教师的名字和教课的总数
(10)找出选修课程最多的学生的名字。
(11)找出没有选修任何课程的学生的名字。
(12)对于出现在 Student中的每个年龄值,找出最常出现的年级。例如,如果FR年级比SR、JR或者SO年级的18岁的学生都多,你就应当输出(18,FR)对。
Student(snum, integer, sname string, major string, level, string, ager integer)
string, meets at, time, room: string, fid integer)
Enrolled(snum: integer, cname: string)
Faculty(fid, integer, fname, string, deptid, integer)
这些关系的含义是不言而喻的。例如 Enrolled,对于每个学生课程对都对应有一条记录,表示学生选修的课程。
用SQL写出下面的查询。结果中不能有重复的行
(1)找出选修了L. Teach所教课程的所有大三学生的名字( level=JR)
(2)找出 History专业或者选修了 L. Teach所教课程中年龄最大的学生的年龄
(3)找出在R128室上课的所有课程,或者有5个以上学生选修的所有课程的名字
(4)找出选修了两门在同一时间上课的课程的所有学生的名字
(5)找出那些在所有的教室都上过课的教师的名字
(6)找出那些所教课程选修学生的数目少于5个的教师的名字
(7)对于每个年级,打印出那个年级以及该年级的学生的平均年龄。
(8)对除了JR以外的所有年级,打印出那个年级以及该年级的所有学生的平均龄
(9)对于每个只在R128室上课的教师,打印教师的名字和教课的总数
(10)找出选修课程最多的学生的名字。
(11)找出没有选修任何课程的学生的名字。
(12)对于出现在 Student中的每个年龄值,找出最常出现的年级。例如,如果FR年级比SR、JR或者SO年级的18岁的学生都多,你就应当输出(18,FR)对。
回忆在练习5.1中所设计的大学数据库模式。这个大学决定将选课做成在线系统。这个网站有两类不同用户:教师和学生。教师可以创建新课程并删除旧课程,学生可以选修现有的课程按照类似的步骤编写数据访问和操作所必须的JDBC代码。在下一章里,将把该代码与应用逻辑和表示的代码进行集成
回忆你在6.8题中关于大学数据库的项目。按照练习7.7中类似的步骤,设计应用逻辑和展示层并完成网站。