這個是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');
-----
結束