这个是2010年5月16日上海交大的数据库系统原理的试题培训题,一共有16道。考试的题目就是从这16道中选择9道,通过5道就算通过了。
考试用的是SQL Server 2000
《数据库原理》上机考试环境
先打开我的电脑 查看是否有F盘 和G盘。
然后启动Microsoft SQL server 查询分析器 输入SQL server 服务器名(cs-gate-2)、 登录名(user机器号)和密码(user机器号) 进入查询分析器窗口。
完成考题后,请查看F盘上是否存在一个.sql 和一个.txt文件。
--------------------------------------------------------------------
模拟题
在“学生管理库”下有已表:S(Sno,Sname,Ssex,Sage,Sdept,
Sclass)分别表示:学号、姓名、性别、年龄和系名和班级;C(Cno,Cname,Ctime)分别表示:课程号、课程名和学时数;S_C(Sno,Cno,Grade)分别表示:学号、课程号和成绩。
1. 找出所有成绩小于60分的学生姓名、学号和成绩。
2. 统计所有参加选修学生的人数。
3.找出选修“数据结构”课程最高成绩学生的姓名、性别、年龄及
分数。
4. 找出比机械系所有学生年龄都小的其他系学生的学号和姓名。
5. 找出所有选修“数据库原理”课程学生的姓名、系名和成绩。
6. 建一新表:T_C (Tno (教师编号,C, 4), Cno(课程号,C,3),
Sclass(班级, C, 6), Rno(教室,C,4)),输入如下内容:
Tno Cno Sclass Rno
T001 C1 210201 R111
T002 C2 210201 R115
T003 C3 210201 R203
T004 C4 220202 R301
T005 C5 220202 R101
T006 C6 220202 R201
7. 找出选修“操作系统”课程的210201班学生上课所在教室及教
师编号。
8. 将对T_C表的删除权转授于user7,查询、插入权转授于user2
和user3。
9. 找出选修T006教师所上课程的课程名及学时数。
10. 找出在R111教室上课的学生姓名与课程名。
11. 找出210201班C1课程的教师编号及学生成绩,并按成绩降
序输出。
12. 找出至少选修三门(包括三门)以上课程学生的学号、姓名
和班级。
13. 找出最低分学生的学号、姓名和成绩。
14. 建一视图:H_S_C:包含属性:Sname,Cname,Grade, 它是所有
成绩大于60分学生的信息。
15. 统计选修“C3”课程的学生人数。
16. 列出每位学生的学号和平均成绩,并按学号降序排列。
----------------------------------------------------------------
模拟题参考答案:
1. Select S.Sname,S_C.Sno,S_C.Grade from S,S_C where
S.Sno=S_C.Sno and Grade < 60
2. Select count(S.Sno) from S where S.Sno in (select distinct Sno
from S_C) (或 Select distinct count (Sno) from S )
3. Select Sname,Ssex,Sage,Grade from S,S_C where S.Sno =
S_C.Sno and Grade =(select max (grade) from S_C,C where
C.Cno = S_C.Cno and Cname = ‘数据结构’)
4. Select Sno,Sname from S where Sdept <> ‘机械’ and Sage < (select min(Sage) from S group by Sdept having Sdept=‘机械’)
5. Select S.Sname,S.Sdept,S_C.Grade from S,S_C where S.Sno = S_C.Sno and S_C.Cno in (select Cno from C where Cname = ‘数据库原理’)
6. Create table T_C(Tno char(4) not null,Cno char(3) not null,
Sclass char(6) not null, Rno char(4) not null)
Insert into T_C values(‘T001’, ‘ C1’, ‘ 210201’, ‘ R111’)
Insert into T_C values(‘T002’, ‘ C2’, ‘ 210201’, ‘ R115’)
Insert into T_C values(‘T003’, ‘ C3’, ‘ 210201’, ‘ R203’)
Insert into T_C values(‘T004’, ‘ C4’, ‘ 210202’, ‘ R301’)
Insert into T_C values(‘T005’, ‘ C5’, ‘ 210202’, ‘ R101’)
Insert into T_C values(‘T006’, ‘ C6’, ‘ 210202’, ‘ R201’)
7. Select Rno,Tno from T_C where Cno = (select Cno from C where
Cname = ‘操作系统’) and Sclass = ‘210201’
8. Grant delete on T_C to user7
Grant select,insert on T_C to user2,user3
9. Select C.Cname,Ctime from C where C.Cno in (select Cno from T_C where Tno = ‘T006’)
10. Select S.Sname,C.Cname from S,C,S_C where S.Sno=S_C.Sno and
C.Cno=S_C.Cno and C.Cno in (Select Cno from T_C where Rno =
‘R111’)
11. Select T_C.Tno,S_C.Grade from T_C,S_C where T_C.Cno =
S_C.Cno and T_C.Cno = ‘C1’ and T_C.Sclass = ‘210201’order by S_C.Grade desc
12. Select Sno,Sname,Sclass from S where Sno in (select Sno from
S_C group by Sno having count(Sno) >= 3)
13. Select S.Sno,S.Sname,S_C.Grade from S,S_C where
S.Sno=S_C.Sno and S_C.Grade = (Select min(Grade) from S_C)
14. Create view H_S_C as (Select S.Sname,C.Cname,S_C.Grade from
S,C,S_C where S_C.Cno = C.Cno and S_C.Sno = S.Sno and
S_C.Grade > 60)
15. Select count(*) from S_C where Cno = ‘C3’
16. Select Sno,avg(Grade) from S_C group by Sno order by Sno
desc
----------------------------------------------------------------
S,C,S_C三个表考试时已经建好了,数据也有。
附表1( C表 )
Cno Cname Ctime
C6 CAD设计 54
C7 汇编语言 60
C4 C程序设计 64
C3 数据库原理 72
C5 计算机原理 72
C1 操作系统 82
C2 数据结构 92
--C
--create table
create table C
(
Cno char(2) not null,
Cname char(10) ,
Ctime smallint ,
primary key(Cno)
);
-- insert data to C
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C6','CAD设计','54');
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C7','汇编语言','60');
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C4','C程序设计','64');
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C3','数据库原理','72');
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C5','计算机原理','72');
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C1','操作系统','80');
INSERT INTO S(Cno,Cname,Ctime) VALUES ('C2','数据结构','92');
附表2 (S表)
Sno Sname Ssex Sage Sdept Sclass
21002 张红 女 57 计算机 210201
22003 李进 男 53 机械 220202
24001 赵明 男 55 汽车 240203
23005 施英 女 24 信息 230001
23006 丁林 男 55 信息 230002
22004 刘晨 男 52 机械 220202
--S
--create table
create table S
(
Sno char(5) not null,
Sname char(6) not null,
Ssex char(2) ,
Sage smallint ,
Sdept char(6) ,
Sclass char(6) ,
primary key(Sno)
);
-- insert data to S
INSERT INTO S(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES ('21002','张红','女','57','计算机','210201');
INSERT INTO S(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES ('22003','李进','男','53','机械','220202');
INSERT INTO S(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES ('24001','赵明','男','55','汽车','240203');
INSERT INTO S(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES ('23005','施英','女','24','信息','230001');
INSERT INTO S(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES ('23006','丁林','男','55','信息','230002');
INSERT INTO S(Sno,Sname,Ssex,Sage,Sdept,Sclass) VALUES ('22004','刘晨','男','52','机械','220202');
附表3(S_C表)
Cno Cname Ctime
21002 C1 50
21002 C5 79
21002 C7 53
22003 C1 81
22003 C2 55
22003 C4 76
22003 C5 91
24001 C2 83
24001 C3 88
24001 C4 71
22004 C3 94
23005 C4 60
23005 C5 54
23006 C1 73
23006 C3 65
23006 C5 84
--S_C
--create table
create table S_C
(
Sno char(5) not null,
Cno char(2) not null,
Grade smallint ,
primary key(Sno,Cno)
);
-- insert data to S_C
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('21002','C1','50');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('21002','C5','79');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('21002','C7','53');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('22003','C1','81');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('22003','C2','55');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('22003','C4','76');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('22003','C5','91');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('24001','C2','83');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('24001','C3','88');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('24001','C4','71');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('22004','C3','94');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('23005','C4','60');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('23005','C5','54');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('23006','C1','73');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('23006','C3','65');
INSERT INTO S_C(Sno,Cno,Grade) VALUES ('23006','C5','84');
-----
结束