资源描述
20**-20**学年第*学期期末考查试卷(A卷)
课程名称:数据库考试班级:
题号
.
—*
四
总分
得分
评分人
一、数据库设计题(共50分)1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件tsdata.mdf,存放路径 为“d:\data\”; 一个事务日志文件tslog.ldf,存放路径为“d:\data\”。其他设置自定。(6分) 请截图(数据库文件属性):
2、在上题创建好的数据库中,按如下要求创建三张表。(每个表正确创建得8分,共24分)表1书籍表:用来存储书籍的基本信息请截图(对象资源管理器,一直展开到“列”,有约束设置的展开至“键”和“约束”):
字段名称
数据类型
长度
是否为空
说明
序号
int
非空
初始值和增量均为1
图书编号
char
10
非空
主键
书名
varchar
50
非空
作者
varchar
20
非空
价格
Money
空
出版社
varchar
50
非空
出版日期
smalldatetime
空
库存量
int
非空
>=0
表2读者表:用来存储读者的基本信息请截图(对象资源管理器,一直展开到“列”,有约束设置的展开至“键”和“约束”):
字段名称
数据类型
长度
是否为空
约束
借书证号
char
10
非空
主键
姓名
varchar
20
非空
性别
char
2
非空
默认值为“男”
单位
varchar
50
联系电话
char
11
空
表3借阅表:存储读者借阅的信息请截图(对象资源管理器,一直展开到“列”,有约束设置的展开至“键”和“约束”):
字段名称
数据类型
长度
是否为空
约束
图书编号
char
10
非空
外键,参照书籍表
借书证号
char
10
非空
外键,参照读者表
借书日期
smalldatetime
非空
还书日期
smalldatetime
空
归还否
char
2
否
3、在“library”数据库中插入以下记录。(每小题4分,共12分)(1)在书籍表中插入以下数据:
图书编号
书名
作者
价格
出版社
出版日期
库存量
J1
计算机基础
刘大石
29
机械工业出版社
2014/2/1
5
J2
数据库应用教程
李刚
32
电于工业出版社
2014/9/1
8
(2)在读者表中插入以下数据:
借书证号
姓名
性别
单位
联系电话
10001
柯思扬
男
信息系
10002
孙 明
男
管理系
(3)在借阅表中插入以下数据:
图书编号
借书证号
借书日期
还书日期
归还否
J1
10001
2015/6/3
2015/12/3
否
J2
10001
2015/6/3
2015/12/3
否
请截图(打开数据表):
4、为读者表创建一个“姓名”列的非聚集索引文件。(4分)请截图(索引属性):
5、创建“读者借阅信息”视图,包括借书证号、姓名、书名、还书日期等信息。(4分) 请截图(打开视图):
二、查询设计题(每小题5分,共25分)1、在library数据库中查询“孙一明”的相关信息。
请粘贴T-SQL查询语句:
2、查询信息系或电子系的读者信息。
请粘贴T-SQL查询语句:
3、查找书名以“计算机”打头的所有图书和作者。
请粘贴T-SQL查询语句:
4、查找姓名为“柯思扬”借阅书本的书名。
请粘贴T-SQL查询语句:
5、查询借书证号为“10001”所借书本的本数,显示借书证号和借书本数,并按借书证号升序排 序。(4分)请粘贴T-SQL查询语句:
三、填空题(每空2分,共10分)1、读者还书存储过程:ReturnBook的创建,若读者没有借阅此书,贝U显示'对不起,你没有借 阅此书,故而无法进行此次还书操作,请核实!'信息。
use Librarygocreate @no char(10),@bid char( 10)asif not exists()begin
print,对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!’end2、在借阅表中创建一个触发器:tri_Book,若要借的书已无库存,则无法进行借书操作,即无法 在'借阅表'中插入记录。
createonfor insert asdeclare @btotal varchar( 10),@bborrowed varchar( 10)select @比00\)\¥£(1=图书编号 from insertedselect @btotal=库存量 from 书籍表 where 图书编号=@bborrowedif()begin
rollback transactionprint,借阅失败!’print,对不起,此书己经没有库存,无法进行本次借书操作!’endgo四、程序题(共15分)1、读者还书存储过程:ReturnBook_l的创建,成功还书时将归还否字段的'否'改成'是',还 书日期为当前时间,显示“成功地向图书馆归还!气2、用借书证号和图书编号为“10001”和“jl”来验证存储过程。
该接
sa
逃度
渤V一否营分一夕击专旨
B i
EJ音份
蠡据库上次SWB期
无
」教据库日志上次备份日期
无
='I ®
library
状态
正常
所有者
sa
创建日期
2015/6/5 07:19:45
大小
4 00 RB
可用空i目
1 82 HB
用户教
4
白教
曰维护
■排序叔则Chin««_PRC_CI_AS
名称
澈据库的名称。
XXXXX学院
20**-20**学年第*学期期末考查试卷参考答案(A卷)
课程名称: 数据座考试班级: XXXXXXXXXXXXXXXXXXXXXXX一、数据库设计题(共50分)1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件sdata.mdf,存放路径为
“d:\data\”; 一个事务日志文件slog.ldf,存放路径为“d:\data\”。其他设置自定。(6分)取消
取消
取消
取消
I诵定
2、在上题创建好的数据库中,按如下要求创建三张表。(每个表正确创建得8分,共24分)
日□ dbo.书籍表 曰口列|T1 序号(int, not null)
?图书第号(PK, char(lO), not null) 国 书名(varchar(50), not null) 司 作者(varchar(20)f not null) 国价格(money, null) 国 出版社(varchar(50), not null) 隹]出版日期(smalldatetime, null) 国库存星(int, not null)日以疆f PK_书辱日□约束13 CK_书畀
□踪发器 日□素引A PK_书籍表(聚集)田□统计信息Bdbo.读者表曰口列,借书证号(PK, char(10), not null)[J]姓名(varchar(50), not null) 国 ffiSU (char(2), not null)
[I]单位(varchar(50), null) U 联系电话(char(ll), null) 日口通f PK_读者表日□约束建]DF_读者表_性§!)国□ •触发器—SE:2 Idbo .借阅表曰以列 f 图书第号(FK, char(lO), not null) ?信书证号(FK, char(lO), not null) [J]借书日期(smalldatetime, not null) 国还书日期(smalldatetime, null) 匡]归还否(char(2), not null)
f FK_借阅表_读者表
f FKJW阅表—书畀 □约束—4人sea3、在“library”数据库中插入以下记录。(每小题4分,共12分) 请截图(打开数据表):
序号
图书编号
书名
作者
价格
出版社
出版日期
库存里
1
jl
计算机基础
刘石
29.0000
机械工业出版社
2014/2/100^)0:00
5
2
j2
数据库应用教程
李刚
32.0000
电子工业出版社
2014/9/100:00:00
8
AAJLL
MJLL
NULL
NULL
NULL
NULL
NULL
NULL
4、为读者表创建一个“姓名”列的非聚集索引文件。(4分) 请截图(索引属性):
借书证号
姓名
性别
单位
联系电话
10001
柯思扬
工程技术系
10002
孙一明
工商管理系
NULL
NULL
NULL
NULL
NULL
图书编号
借书证号
借书曰期
还书日期
归还否
jl
10001
2015/6/3 00:00:00
2015/12/3 00:0...
否1
j2_
10001
2015/6/3 00:00:00
2015/12/3 00:0...
否
NULL
AAJLL
AAJLL
NULL
NULL
曰□索引血)PK_读者表(聚集)血姓名(不唯一,非聚集)5、创建“读者借阅信息”视图,包括借书证号、姓名、书名、还书日期等信息。(4分) 请截图(打开视图,展开至列):
日□视囹国□系统视囹日回 dbo.viewl日口列
言 信书证号(char(10), not null)
图姓名(varchar(50), not null)
匡]书名(varchar(50), not null) 匡]还书日期(smalldatetime, null) 国□触发器二、查询设计题(每小题5分,共25分)- select夫from 读者表where 姓名='列'一明'. a select * from读者表where单位in (,信息系,,,电子系,)6. select书名,作者from书籍表where书名like,计算机%,. select书名from书籍表where图书编号in(select图书编号from借阅表where借书证号=
(select借书证号from读者表where姓名=,柯思扬,)). select b.借书证号,count (*)借书本数from书籍表a,借阅表bwhere a.图书编号=b .图书编号and借书证号=* 10001T group by b・借书证号order by b・借书证号三、填空题(每空2分,共10分)1> procedure2、select * from 借阅表 where借书证号=@no and图书编号=@Bid
3、trigger tri_Book4、借阅表for insert5、@btotal=Obegin四、程序题(共15分)1、读者还书存储过程:ReturnBook.m创建,成功还书时将归还否字段的'否'改成'是',还 书日期为当前时间,显示“成功地向图书馆归还!气2、用借书证号和图书编号为“10001 ”和“jl”来验证存储过程。
create procedure ReturnBook_l@no varchar(10),@Bid varchar (30)asif exists (select夫from借阅表where借书证号=@。。and图书编号=@Bid and归还否 =,否,)beginUpdate借阅表set归还否=,是七还书日期=getdate ()
where借书证号=@。0 and图书编号=@Bid
Select,成功地向图书馆归还,endgoEXEC ReturnBook 1T10001 \ 1 jl1
展开阅读全文