资源描述
2016-2017学年第一学期期末考查试卷(A卷)
课程名称: 网络数据库
考试班级: 计算机应用技术(网络系统管理)1501
计算机应用技术(网站建设与图像处理)1501
题 号
一
二
三
四
总分
得 分
评分人
一、数据库设计题(共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
柯思扬
男
信息系
13837482123
10002
孙一明
男
管理系
13978621278
(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的创建,若读者没有借阅此书,则显示‘对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!’信息。
use Library
go
create _____________________
@no char(10),@bid char(10)
as
if not exists(_________________________________________________________)
begin
print'对不起,你没有借阅此书,故而无法进行此次还书操作,请核实!'
end
2、在借阅表中创建一个触发器:tri_Book,若要借的书已无库存,则无法进行借书操作,即无法在‘借阅表’中插入记录。
create ______________________
on ______________
for insert
as
declare @btotal varchar(10),@bborrowed varchar(10)
select @bborrowed=图书编号 from inserted
select @btotal=库存量 from 书籍表 where 图书编号=@bborrowed
if(_______________)
begin
rollback transaction
print '借阅失败!'
print'对不起,此书已经没有库存,无法进行本次借书操作!'
end
go
四、程序题(共15分)
1、读者还书存储过程:ReturnBook_1的创建,成功还书时将归还否字段的‘否’改成‘是’,还书日期为当前时间,显示“成功地向图书馆归还!”。
2、用借书证号和图书编号为“10001”和“j1” 来验证存储过程。
系 年级 专业 班级 姓名 学号 .
……………………密……………………………………封………………………………线………………………………
浙江东方职业技术学院
2016-2017学年第一学期期末考查试卷(B卷)
课程名称: 网络数据库
考试班级: 计算机应用技术(网络系统管理)1501
计算机应用技术(网站建设与图像处理)1501
题 号
一
二
三
四
总分
得 分
评分人
一、单选题(每题2分,共20分)
( )1、下列不能启动SQL Server服务的方法:
A、使用SQL Server配置管理器 B、使用Windows的管理工具
C、使用 net start mssqlserver 命令 D、在查询编辑器中编写T-SQL程序
( )2、部分匹配查询中有关通配符“%”的正确的叙述是 。
A、“%”代表多个字符 B、“%”可以代表零个或多个字符
C、“%”不能与“_”一同使用 D、“%”代表一个字符
( )3、在SELECT子句中,如果想要返回结果集中不包含相同的行,应该使用 关键字。
A、TOP B、AS C、DISTINCT D、JOIN
( )4、 是表中用来唯一标识的每行记录。
A、外键 B、主键 C、索引 D、数据库完整性
( )5、SQL 中,"GRADE NOT BETWEEN 60 AND 90"的语义是 。
A、GRADE<60 OR GRADE>90 B、GRADE<= 60 OR GRADE>= 90
C、GRADE<>60 AND GRADE<>90 D、GRADE<>60 OR GRADE<>90
( )6、 简称DBA。
A、数据库管理员 B、数据库 C、数据库管理系统 D、计算机硬件
( )7、在SQL中,可以使用 语句执行恢复数据库的操作。
A、BACKUP DATABASE B、RESTORE DATABASE
C、CREATE DARABASE D、DROP DATABASE
( )8、设一个班级可选修多门课程,一门课程可被多个班级选修,班级与课程之间是 。
A、一对一的联系 B、一对多的联系 C、多对一的联系 D、多对多的联系
( )9、SQL Server2005的数据库中主数据文件的扩展名是 。
A、.mdf B、.ndf C、.ldf D、.dbf
( )10、当表中引入 时,会提高记录的查询速度。
A、外键 B、主键 C、索引 D、数据库完整性
二、数据库设计题(共40分)
根据如下E-R图,将其转换为逻辑数据库。
学生
课程
选修
学号
姓名
性别
班级
成绩
课程号
学分
课程名
m
n
1、转换成如下关系表(关系表参考:表名(字段1,字段2,…))(6分)
2、确定关系中的主键,分别为: 、 、 。(6分)
3、创建一个名字为“stu_course”的数据库。要求主数据文件名为“student_data.mdf”,其他参数自定义。(数据库成功创建得4分)
请截图(数据库文件属性):
4、根据1中的关系表,在stu_course库中创建数据表。(每个表正确创建得6分,共18分)
请截图(对象资源管理器,一直展开到“列”):
5、创建立一个“课程名”列的非聚集索引文件。(5分)
请截图(索引属性):
6、创建学生成绩视图,包括学号、姓名、课程名、成绩等信息。(5分)
请截图(打开视图):
三、查询设计题(共25分)
1、附加数据库companyinfo(数据库文件在paperB中)。(附加成功得5分)
请截图(对象资源管理器):
2、查询雇员表employee中薪水超过3000元的雇员的姓名和薪水。(5分)
请粘贴T-SQL查询语句:
3、查询雇员表employee中所有姓“章”的雇员的信息。(5分)
请粘贴T-SQL查询语句:
4、在产品表product中按产品的种类分类,求出各种类型产品的价格总和、平均单价以及各类产品的种类数。(5分)
请粘贴T-SQL查询语句:
5、查询所有订购了“鼠标”产品的公司信息。(5分)
请粘贴T-SQL查询语句:
四、填空题(每空3分,共15分)
1、创建存储过程P2,它能够根据用户给定的类别ID统计具有该ID的产品名称数,并将产品名称数返回给用户。
/*创建存储过程*/
CREATE PROCEDURE P2
@category int , @ProductNum smallint OUTPUT
AS
SET =
( SELECT FROM product
WHERE 类别ID = @category )
PRINT @ProductNum
/*执行存储过程*/
DECLARE @category int ,@ProductNum smallint
SET @category = 1
EXEC P2
SELECT @ProductNum
2、创建一个修改触发器,用于防止用户修改表employee的雇员ID。
CREATE TRIGGER employee_Update
ON employee
FOR
AS
IF UPDATE (雇员ID)
BEGIN
RAISERROR ('你不能更新这一列',10,1)
END
XXXXX学院
2016-2017学年第一学期期末考查试卷参考答案 (A卷)
课程名称: 网络数据库
考试班级: XXXXXXXXXXXXXXXXXXXXXXX
一、数据库设计题(共50分)
1、以“library”为名称创建一个数据库。该数据库中包含一个主数据文件sdata.mdf,存放路径为“d:\data\”;一个事务日志文件slog.ldf,存放路径为“d:\data\”。其他设置自定。(6分)
2、在上题创建好的数据库中,按如下要求创建三张表。(每个表正确创建得8分,共24分)
3、在“library”数据库中插入以下记录。(每小题4分,共12分)
请截图(打开数据表):
4、为读者表创建一个“姓名”列的非聚集索引文件。(4分)
请截图(索引属性):
5、创建“读者借阅信息”视图,包括借书证号、姓名、书名、还书日期等信息。(4分)
请截图(打开视图,展开至列):
二、查询设计题(每小题5分,共25分)
1. select * from 读者表where 姓名='孙一明'
2. a select * from 读者表where 单位in ('信息系','电子系')
6
3. select 书名,作者from 书籍表where 书名like '计算机%'
4.select 书名from 书籍表where 图书编号in
(select 图书编号from 借阅表where 借书证号=
(select 借书证号from 读者表where 姓名='柯思扬'))
5. select b.借书证号,count(*) 借书本数
from 书籍表a,借阅表b
where a.图书编号=b.图书编号and 借书证号='10001'
group by b.借书证号
order by b.借书证号
三、填空题(每空2分,共10分)
1、procedure
2、select * from 借阅表 where 借书证号=@no and 图书编号=@Bid
3、trigger tri_Book
4、借阅表for insert
5、@btotal=0begin
四、程序题(共15分)
1、读者还书存储过程:ReturnBook_1的创建,成功还书时将归还否字段的‘否’改成‘是’,还书日期为当前时间,显示“成功地向图书馆归还!”。
2、用借书证号和图书编号为“10001”和“j1” 来验证存储过程。
create procedure ReturnBook_1
@no varchar(10),@Bid varchar(30)
as
if exists(select * from 借阅表where 借书证号=@no and 图书编号=@Bid and 归还否='否')
begin
Update 借阅表set 归还否='是',还书日期=getdate()
where 借书证号=@no and 图书编号=@Bid
Select '成功地向图书馆归还'
end
go
EXEC ReturnBook_1 '10001','j1'
XXXXXX学院
2016-2017学年第一学期期末考查试卷参考答案 (B卷)
课程名称: 网络数据库
考试班级: XXXXXXXXXXXXXXXXXXXX
一、单选题(每题2分,共20分)
1
2
3
4
5
6
7
8
9
10
D
B
C
D
A
A
B
B
A
C
二、数据库设计题(共40分)
根据如下E-R图,将其转换为逻辑数据库。
学生
课程
选修
学号
姓名
性别
班级
成绩
课程号
学分
课程名
m
n
1、转换成如下关系表(关系表参考:表名(字段1,字段2,…))(6分)
学生(学号,姓名,性别,班级)
课程(课程号,课程名,学分)
选修(学号,课程名,成绩)
2、确定关系中的主键,分别为:学号、课程号、学号与课程号。(6分)
3、创建一个名字为“stu_course”的数据库。要求主数据文件名为“student_data.mdf”,其他参数自定义。(数据库成功创建得4分)
4、根据1中的关系表,在stu_course库中创建数据表。(每个表正确创建得6分,共18分)
5、创建立一个“课程名”列的非聚集索引文件。(5分)
6、创建学生成绩视图,包括学号、姓名、课程名、成绩等信息。(5分)
三、查询设计题(共25分)
1、附加数据库companyinfo(数据库文件在paperB中)。
(附加成功得5分)
2、查询雇员表employee中薪水超过3000元的雇员的姓名和薪水。(5分)
Select 姓名,薪水
from employee
Where 薪水>3000
3、查询雇员表employee中所有姓“章”的雇员的信息。(5分)
Select *
from employee
Where 姓名 LIKE ‘章’
4、在产品表product中按产品的种类分类,求出各种类型产品的价格总和、平均单价以及各类产品的种类数。(5分)
Select sum(价格 ),avg(价格),count(名称)
From product
Group by 种类
5、查询所有订购了“鼠标”产品的公司信息。(5分)
Select *
from company join product on company.公司号= product. 公司号
Where名称=’鼠标’
四、填空题(每空3分,共15分)
1、创建存储过程P2,它能够根据用户给定的类别ID统计具有该ID的产品名称数,并将产品名称数返回给用户。
/*创建存储过程*/
CREATE PROCEDURE P2
@category int , @ProductNum smallint OUTPUT
AS
SET ProductNum =
( SELECT count(产品名称) FROM product
WHERE 类别ID = @category )
PRINT @ProductNum
/*执行存储过程*/
DECLARE @category int ,@ProductNum smallint
SET @category = 1
EXEC P2 @category
SELECT @ProductNum
2、创建一个修改触发器,用于防止用户修改表employee的雇员ID。
CREATE TRIGGER employee_Update
ON employee
FOR update
AS
IF UPDATE (雇员ID)
BEGIN
rollback
RAISERROR ('你不能更新这一列',10,1)
END
12
展开阅读全文