吉林省经济管理干部学院  吉林经济职业技术学院
2007--2008学年第二学期期末试题
系部:            班级:            姓名:              学号:
---------------------装------------订------------线-------------------
《SQL Server数据库技术及应用》试题E
系部
国际商务
适用专业
软件技术
使用班级
2007软件
学时
85
出题教师
郭伟业
考试方式
闭卷
卷面总分
80分
考试时间
120分钟
一、选择题(共计10 分,每题2分)
1.删除数据库的命令是以下哪个选项?(    C  )
A.DROP TABLE
B.CREATE TABLE
C.DROP DATABASE
D.ALTER DATABASE
2.下列选项中哪个语句用于清除自最近的事务语句以来所有的修改?( B  )
A.COMMIT TRANSACTION
B.ROLLBACK TRANSACTION
C.BEGIN TRANSACTION
D.SAVE TRANSACTION
3.下列选项中哪个语句是用于定义事务的起始点的?(  C )
A.COMMIT TRANSACTION
B.ROLLBACK TRANSACTION
C.BEGIN TRANSACTION
D.SAVE TRANSACTION
4.下列选项中哪个语句能够提交一个事务?(  A  )
A.COMMIT TRANSACTION
B.ROLLBACK TRANSACTION
C.BEGIN TRANSACTION
D.SAVE TRANSACTION
5.SQL Server使用哪些命令来管理权限?(  A  )
A.GRANT、DENY、REVOKE
B.DELETE、DENY、REVOKE
C.SELECT、DROP、INSERT
D.CREATE、ALTER、DROP
二、简答题(共计30分,每题2分)
1.SQL Server2005数据库有哪三种类型的文件?
(1).主要数据文件
主要数据文件包含应用数据及数据库的启动信息,主要数据文件是必需的,一个数据库只有一个主要数据文件,其扩展文件名为.mdf。
(2).次要数据文件
次要数据文件是可选的,由用户定义并存储用户数据。一个数据库可以没有次要数据文件,也可以同时拥有多个次要数据文件,其扩展文件名为.ndf。另外,使用次要数据文件可以将数据存储到不同的磁盘上,能够提高数据处理的效率。
(3).事务日志文件
事务日志文件保存用于恢复数据库的日志信息。每个数据库至少有一个事务日志文件,其扩展文件名为.ldf。
2.将学生基本信息表中姓名为“王孟莹”的同学姓名改为“刘孟莹”。
update 学生基本信息set 姓名='刘孟莹' where  姓名='王孟莹'
3.查询商品信息表中的厂家编号为“101080001” 或“101010009”,并且商品名称中包含“电”的商品信息
select * from 商品信息
where 厂家编号in ('101080001','101010009') and 商品名称like'%电%'
4.列出商品信息表中所有商品的当前零售价及加价20%以后的价格,结果如图1所示。
图1 应用算术运算符计算值
select 条形码,商品名称,零售, 零售*1.2 as 现进货价格 from 商品信息
5.使用Transact-SQL语句为学生基本信息表创建名为“CX_学号”的CHECK约束,该约束限制学号字段的数据只能由9位数字组成。
alter table 学生基本信息
add constraint cx_学号
check(学号like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
6.在SELECT语句中应用BETWEEN关键字完成下面功能:显示商品信息表中零售价介于8元至12元的商品数据。
select * from 商品信息where 零售价between 8 and 12
7.从销售明细表中查询已被销售过的商品,要求结果消除表中重复数据。
select distinct 条形码from 销售明细
8.在SELECT语句中应用COUNT完成下面功能:从销售明细表中查询条形码为“6922365800092”商品的销售次数。(提示:该语句中除使用COUNT外,还应使用WHERE条件语句)
select count(条形码) from 销售明细where 条形码='6922365800092'
9.编写SELECT语句,显示生产厂家表中的厂家编号、厂家名称列的数据。
select 厂家编号,厂家名称 from 生产厂家基本的sql语句有哪些
10. 使用SELECT INTO语句创建一个新商品表,将商品信息表中的商品条形码、商品名称及零售价写入到新商品表中。
SELECT 条形码,商品名称,零售价 INTO 新商品表 FROM 商品信息
11.使用COMPUTE BY子句查询商品信息表:查询出每个产品类型中其零售价低于20元的商品,计算每类商品零售价总计,结果如图5所示形式。
图5 计算每类商品零售价总计
SELECT 大类编号,条形码,商品名称,进货价,零售价
FROM 商品信息
WHERE 零售价<=20
ORDER BY 大类编号,条形码
COMPUTE SUM(零售价) BY 大类编号
12.使用比较运算符子查询形式,查询定价高于平均定价的商品条形码。
SELECT 条形码FROM 销售明细
WHERE 定价>(SELECT AVG(定价)FROM 销售明细)
13.从商品信息表及销售明细表中查询未曾销售过的商品条形码及商品名称,结果如图4所示。
图4 14题运行结果
SELECT 条形码,商品名称FROM 商品信息
WHERE 条形码<>ALL(SELECT 条形码FROM 销售明细)
14.查询入学年份为2006年,并且姓氏为“王”姓的同学的学号、姓名、考试科目及成绩。
select 学生基本信息.学号,学生基本信息.姓名,成绩.考试科目,成绩.成绩
from 学生基本信息,成绩
where 学生基本信息.学号=成绩.学号
and convert(varchar(20),学生基本信息.入学年份,102) like '2006%'
and 学生基本信息.姓名like'王%'
15.查询成绩在60至75分之间的学生学号、姓名信息。
select 学号,姓名from  学生基本信息
where 学号in(select 学号from 成绩where 成绩between 60 and 75)
select 学生基本信息.学号,学生基本信息.姓名from  学生基本信息,成绩
where (学生基本信息.学号=成绩.学号) and (成绩.成绩>= 60 and 成绩.成绩<=75)
三、编程题(共计40 分,第1题10分,第2、3题每题15分)
1.对条形码为“6903531111020”的商品零售价降价10%,若其价格低于15元,则事务回滚并输出“价格低于15元,不进行更新!”的信息
BEGIN TRANSACTION
UPDATE 商品信息set 零售价=零售价*0.9 WHERE 条形码='6903531111020'
IF(select 零售价from 商品信息where 条形码='6903531111020')<15
BEGIN
    ROLLBACK TRANSACTION
    PRINT '价格低于元,不进行更新!'
END
ELSE
BEGIN
    COMMIT TRANSACTION
    PRINT '价格修改完毕!'
END
2.存储过程在学生成绩管理系统中的应用:
(1)创建存储过程p_stu1,要求能够根据学生学号显示学生的基本信息。
create procedure p_stu1
@stunum varchar(10)
as
select * from 学生基本信息 where 学号=@stunum
(2)创建存储过程p_stu2,要求能够根据学生学号显示学生的姓名及各科成绩(说明:学生成绩与学生姓名分属于不同的两个表)。
create procedure p_stu3
@stunum varchar(10)
as
select 学生基本信息.姓名,成绩.科目,成绩.成绩from 学生基本信息,成绩
where  学生基本信息.学号=@stunum and 学生基本信息.学号=成绩.学号
(3)创建带输入参数的存储过程p_stu4,要求能够通过学号修改学生基本信息表中的学生姓名。
    create procedure p_stu4
@stunum varchar(10),
@stuname varchar(20)
as
update 学生基本信息set 姓名=@stuname where 学号= @stunum
3.触发器在学生成绩管理系统中的应用
(1)创建触发器t_stu2,若学生基本信息表中学号被修改时,学生成绩表中对应的数据也相应发生变化。
create trigger t_stu2
on 学生基本信息
after  update
as
begin
declare @a float,@b float
select @a=学号 from deleted
select @b=学号 from inserted
print @a
print @b
if(@a!=@b)
update 成绩 set 学号=@b where 学号=@a
end
(2)创建触发器t_stu3,若更改成绩表中的数据,即显示“已对成绩表中的内容修改完毕!”。
create trigger t_stu3
on 成绩
after  update
as
print '已对成绩表中的内容修改完毕'
(3)创建触发器t_stu4,若删除课程表中的行数据,将同时删除成绩表中该课程的全部数据。
create trigger t_stu4
on 课程
after  delete

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。