1、20*-20*学年第*学期期末考查试卷(A卷)课程名称:数据库考试班级:题号.*四总分得分评分人一、数据库设计题(共50分)1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件tsdata.mdf,存放路径 为“d:data”; 一个事务日志文件tslog.ldf,存放路径为“d:data”。其他设置自定。(6分) 请截图(数据库文件属性):2、在上题创建好的数据库中,按如下要求创建三张表。(每个表正确创建得8分,共24分)表1书籍表:用来存储书籍的基本信息请截图(对象资源管理器,一直展开到“列”,有约束设置的展开至“键”和“约束”):字段名称数据类型长度是否为空说明序号
2、int非空初始值和增量均为1图书编号char10非空主键书名varchar50非空作者varchar20非空价格Money空出版社varchar50非空出版日期smalldatetime空库存量int非空=0表2读者表:用来存储读者的基本信息请截图(对象资源管理器,一直展开到“列”,有约束设置的展开至“键”和“约束”):字段名称数据类型长度是否为空约束借书证号char10非空主键姓名varchar20非空性别char2非空默认值为“男”单位varchar50联系电话char11空表3借阅表:存储读者借阅的信息请截图(对象资源管理器,一直展开到“列”,有约束设置的展开至“键”和“约束”):字段名
3、称数据类型长度是否为空约束图书编号char10非空外键,参照书籍表借书证号char10非空外键,参照读者表借书日期smalldatetime非空还书日期smalldatetime空归还否char2否3、在“library”数据库中插入以下记录。(每小题4分,共12分)(1)在书籍表中插入以下数据:图书编号书名作者价格出版社出版日期库存量J1计算机基础刘大石29机械工业出版社2014/2/15J2数据库应用教程李刚32电于工业出版社2014/9/18(2)在读者表中插入以下数据:借书证号姓名性别单位联系电话10001柯思扬男信息系10002孙 明男管理系(3)在借阅表中插入以下数据:图书编号借书
4、证号借书日期还书日期归还否J1100012015/6/32015/12/3否J2100012015/6/32015/12/3否请截图(打开数据表):4、为读者表创建一个“姓名”列的非聚集索引文件。(4分)请截图(索引属性):5、创建“读者借阅信息”视图,包括借书证号、姓名、书名、还书日期等信息。(4分) 请截图(打开视图):二、查询设计题(每小题5分,共25分)1、在library数据库中查询“孙一明”的相关信息。请粘贴T-SQL查询语句:2、查询信息系或电子系的读者信息。请粘贴T-SQL查询语句:3、查找书名以“计算机”打头的所有图书和作者。请粘贴T-SQL查询语句:4、查找姓名为“柯思扬”
5、借阅书本的书名。请粘贴T-SQL查询语句:5、查询借书证号为“10001”所借书本的本数,显示借书证号和借书本数,并按借书证号升序排 序。(4分)请粘贴T-SQL查询语句:三、填空题(每空2分,共10分)1、读者还书存储过程:ReturnBook的创建,若读者没有借阅此书,贝U显示对不起,你没有借 阅此书,故而无法进行此次还书操作,请核实!信息。use Librarygocreate no char(10),bid char( 10)asif not exists()beginprint,对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!end2、在借阅表中创建一个触发器:tri_Bo
6、ok,若要借的书已无库存,则无法进行借书操作,即无法 在借阅表中插入记录。createonfor insert asdeclare btotal varchar( 10),bborrowed varchar( 10)select 比00)(1=图书编号 from insertedselect btotal=库存量 from 书籍表 where 图书编号=bborrowedif()beginrollback transactionprint,借阅失败!print,对不起,此书己经没有库存,无法进行本次借书操作!endgo四、程序题(共15分)1、读者还书存储过程:ReturnBook_l的创建,
7、成功还书时将归还否字段的否改成是,还 书日期为当前时间,显示“成功地向图书馆归还!气2、用借书证号和图书编号为“10001”和“jl”来验证存储过程。该接sa逃度渤V一否营分一夕击专旨B iEJ音份蠡据库上次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一、数据库设计题(
8、共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) 国
9、 出版社(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 .
10、借阅表曰以列 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分) 请截图(打开数据表):序号图书编号书名作者价格出版社出版日期库存里1jl计算机基础刘石29.0000机械工业出版社2014/2/100)0:0052j2数据库应用教程李刚
11、32.0000电子工业出版社2014/9/100:00:008AAJLLMJLLNULLNULLNULLNULLNULLNULL4、为读者表创建一个“姓名”列的非聚集索引文件。(4分) 请截图(索引属性):借书证号姓名性别单位联系电话10001柯思扬工程技术系10002孙一明工商管理系NULLNULLNULLNULLNULL图书编号借书证号借书曰期还书日期归还否jl100012015/6/3 00:00:002015/12/3 00:0.否1j2_100012015/6/3 00:00:002015/12/3 00:0.否NULLAAJLLAAJLLNULLNULL曰索引血)PK_读者表(聚集
12、)血姓名(不唯一,非聚集)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
13、书名,作者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图书编号=Bid3、trig
14、ger tri_Book4、借阅表for insert5、btotal=Obegin四、程序题(共15分)1、读者还书存储过程:ReturnBook.m创建,成功还书时将归还否字段的否改成是,还 书日期为当前时间,显示“成功地向图书馆归还!气2、用借书证号和图书编号为“10001 ”和“jl”来验证存储过程。create procedure ReturnBook_lno varchar(10),Bid varchar (30)asif exists (select夫from借阅表where借书证号=。and图书编号=Bid and归还否 =,否,)beginUpdate借阅表set归还否=,是七还书日期=getdate ()where借书证号=。0 and图书编号=BidSelect,成功地向图书馆归还,endgoEXEC ReturnBook 1T10001 1 jl1