中南大学数据库复习总纲及相关试题

机会总是留给有准备的人。

3. 建立上述教师工资表teacher的按编号的索引,索引名称为teach

Create index teach on teacher(bh); 唯一索引 unique index ,聚族索引 clustered index

4. 建立上述教师工资表teacher的视图,视图包括姓名、基本工资、实发工资,名称为BMV,条件

是部门是“经管系”。 Cteate view BMV as Select XM,JBGZ,SFGZ From teacher Where bm=’经管系’;

5. 删除基本表教师工资表teacher。

Drop table teacher;

七、综合题(本题15分)

针对第五题所用的三张表,用SQL语言进行下列各项操作: 设有关系模式为:

学生(学号,姓名,性别,年龄,所在系) 课程(课程号,课程名,先行课) 选课(学号,课程号,成绩)

1. 查询年龄在18到22之间的学生的姓名,年龄,所在系;(2分)

Select 姓名,年龄,所在系 From 学生

Where 年龄 between 18 and 22; 2. 查询所有姓“李”的学生的成绩;(2分)

Selecct 成绩 From 选课

Where 学号 IN( Select 学号 From 学生 Where 姓名 like ‘李%’

);

3. 查询选修了5门以上课程的学生学号;(2分)

Select 学号 From 选课 Group by 学号 Having count(*)>=5

4. 查询选修了“数据库原理”这门课的学生的姓名;(2分)

Selecct 姓名 From 学生

Where 学号 IN( Select 学号 From选课 Where 课程号 IN(

第 5 页 共 29 页

机会总是留给有准备的人。

Select课程号 From 课程 Where 课程名=’数据库原理’ ) );

5. 查询其他系中比“经管系“所有学生年龄都大的学生名单(2分)

Select From学生

Where 年龄>=(select max(年龄) from 学生 where 所在系=’经管系’); 6. 查询选修了全部课程的学生学号和姓名。(2分)

Selecct 学号,姓名 From 学生

Where not exists( Select * From 选课 Where 课程号 not exists( Select * From 课程 Where 学生.学号=选课.学号 and 选课.课程号=课程.课程号

) );

参考:

思路:学号未知,科目未知,说明有两个未知变量。应该有两个EXISTS。我们可以扫描 student 和 course共有 s * c 中组合,将这些组合与SC的每一项进行匹配,注意s*c组合已经包含所

有可能。如果全部找到 ,就说明已经选修了全部课程。找不到就说明有课程没选修 。再将没选修的的

提交给上一exists 循环 。若上一exists 不存在的再提交给外循环。 select Sname from student where NOT exists // (select * from course

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@)