1
为了使索引键的值在基本表中唯一,在创建索引的语句中应使用保留字( A )。
满分: 2分 得分: 2分
A
UNIQUE
B
CLUSTER
C
DISTINCT
D
UNION
老师点评:
2
创建索引是为解决关系数据库中( B)问题而引入的。
满分: 2分 得分: 2分
A
插入、删除异常和数据冗余
B
提高查询速度
C
减少数据操作的复杂性
D
保证数据的安全性和完整性
老师点评:
3
关系数据库中,为了简化用户的查询操作,而又不增加数据冗余,常用方法是创建( A )。
满分: 2分 得分: 2分
A
视图
B
新表
C
索引
D
属性
老师点评:
4
以下关于视图的描述中,错误的是( B )。
满分: 2分 得分: 2分
A
视图是虚表
B
可以对任何视图进行任意的修改操作
C
视图能够对数据库提供安全保护作用
D
视图对重构数据库提供了一定程度的独立性
老师点评:
5
下列关于视图的描述,( C )是不正确的。
满分: 2分 得分: 2分
A
视图对应外模式
B
视图是虚表
C
视图可以加快查询的执行速度
D
视图可以简化查询语句的编写
老师点评:
6
下列各项,( C )不属于SQL Server的安全控制体系结构。
满分: 2分 得分: 2分
A
登录名
B
数据库用户
C
规则
D
数据库对象权限
老师点评:
7
SQL Server中,要定义产品的数量随出入库单的增加而变化,应使用( C )实现。
满分: 2分 得分: 2分
A
规则
B
CHECK约束
C
触发器
D
存储过程
老师点评:
8
事务日志文件是用于记录( B )。
满分: 2分 得分: 2分
A
程序运行的过程
B
对数据库所有的更新操作
C
程序执行的结果
D
用户对数据库的访问信息
老师点评:
9
下列各个T-SQL标识符,( A )是合法的。
满分: 2分 得分: 2分
A
AbC
B
A B
C
AS
D
2S
老师点评:
10
下列有关T-SQL中局部变量的说法,( D )是不正确的。
满分: 2分 得分: 2分
A
局部变量要先声明后使用
B
局部变量的作用域是一个批处理
C
局部变量名以@开头
D
局部变量赋值语句形如:名=值
老师点评:
11
下列有关SQL Server中存储过程的说法,( D )是不正确的。
满分: 2分 得分: 2分
A
存储过程可以有多个输入参数
B
存储过程可以有多个输出参数
C
系统存储过程的前缀是sp_
D
存储过程由事件驱动执行
老师点评:
12
数据的安全性是指( A )。
满分: 2分 得分: 2分
A
防止数据被非法使用
B
数据的存储和使用数据的程序无关
C
数据的正确性、一致性
D
减少重复数据
老师点评:
13
在SQL Server中,为便于管理用户及权限,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为( B )。
满分: 2分 得分: 2分
A
账户
B
角色
C
登录名
D
SQL Server用户
老师点评:
14
下列有关SQL Server中触发器的说法,( C )是不正确的。
满分: 2分 得分: 2分
A
触发器由事件驱动执行
B
创建触发器时必须定义驱动事件
C
执行触发器时要说明触发器名
D
触发器能对表实现复杂的数据完整性约束
老师点评:
15
DBMS提供授权功能来控制不同用户访问数据的权限,这是为了实现数据库的( C )。
满分: 2分 得分: 2分
A
可靠性
B
一致性
C
安全性
D
独立性
老师点评:
16
设工程-零件数据库有4个基本表,
供应商(供应商代码,名称,城市)
零件(零件代码,零件名,颜色,产地)
工程(工程代码,工程名,预算)
供应情况(供应商代码,零件代码,工程代码,数量)
请使用T-SQL语句为“造船厂”工程建立供应情况视图“V_SPJ”,包括供应商代码、供应商名称、零件代码、供应数量等信息。
满分: 5分 得分: 5分
学生答案:
CREATE VIEW V_SPJ(供应商代码;供应商名称;零件代码;供应数量)
AS
SELECT 供应情况.供应商代码;名称;零件代码;数量
FROM 供应情况;供应商
WHERE 供应情况.供应商代码=供应商.供应商代码
AND 工程代码=
(SELECT 工程代码 FROM 工程WHERE 工程名=’造船厂’)
老师点评:
17
基于上题数据库,请使用T-SQL语句在工程表的预算和工程名上创建组合索引“IX_J”,预算降序,工程名升序。
满分: 5分 得分: 5分
学生答案:
CREATE INDEX IX_J ON 工程(预算 DESC;工程名)
老师点评:
18
基于上题数据库,请使用T-SQL语句创建规则对象“R_COLOR”,限制“颜色”只能是“红”、“黄”、“蓝”,并将该规则绑定到零件表的“颜色”列上。
满分: 5分 得分: 5分
学生答案:
CREATE RULE R_COLOR AS @x IN (‘红’;‘黄’;‘蓝’)
EXEC sp_bindrule ‘R_COLOR‘;‘零件.颜色
老师点评:
19
基于上题数据库,请使用T-SQL语句创建默认值对象“D_CITY”,其值为“南京”,将其绑定到供应商的“城市”列上。
满分: 5分 得分: 5分
学生答案:
CREATE DEFAULT D_CITY AS ‘南京’
EXEC sp_bindefault ‘D_CITY’;‘供应商.城市’
老师点评:
20
设学生管理数据库有3个基本表,
学生(学号,姓名,性别,专业,总学分)
课程(课程号,课程名,学分)
选课(学号,课程号,分数)
请创建并执行存储过程p_course_grade,将指定课程成绩大于55小于60的都提高到60分,并显示该课程的选修学生姓名和成绩。执行该存储过程,以修改并显示004号课程的成绩信息。
满分: 10分 得分: 10分
学生答案:
create proc p_course_grade @cno char(3)
as
Update 选课
set 分数=60
Where 课程号=@cno and 分数>55 and 分数<60
Select 姓名;分数
From 学生; 选课
Where 学生.学号=选课.学号 and 课程号=@cno
执行:
Exec p_course_grade ‘004’
老师点评:
21
基于上题数据库,创建存储过程p_grade,查询指定学号和课程号的分数,作为结果返回。执行该存储过程,查询10103号学生001号课程的分数,要求根据返回信息做如下处理:如返回空值显示“无指定成绩信息”,否则显示“成绩是XX”。
满分: 10分 得分: 10分
学生答案:
Create proc p_grade @sno char(5);@cno char(3);@grade tinyint output
as
select @grade=分数
from 选课
where 学号=@sno and 课程号=@cno
执行:
declare @grade tinyint
Exec p_grade ‘10103’;’001′; @grade output
If @grade is null
Print ‘无指定成绩信息’
Else
Print ‘成绩是’+convert(varchar(3);@grade)
老师点评:
22
基于上题数据库,创建触发器“T_credit”,功能为:当用户在选课表中插入或修改一条学生成绩信息时,自动更新学生表中该生的总学分(设成绩60分以上能得到学分)。设计一条语句激活该触发器。
满分: 10分 得分: 10分
学生答案:
Create Trigger T_credit
ON 选课
FOR INSERT
AS
Declare @sno char(10)
Declare @scredit smallint
Select @sno=学号 From INSERTED
Select @scredit =SUM(学分) From 课程
Where 课程号 IN (Select 课程号 From 选课
Where 学号=@sno AND 分数>=60)
Update 学生
Set 总学分=@scredit
Where 学号=@sno
激活:
Insert 选课 values(‘10103′;’001′;80)
老师点评:
23
基于上题数据库,创建触发器“T_student”,功能为:当删除学生表中的某条学生信息时,如果该生不是“计算机应用”专业的学生,则自动删除选课表中该学生的成绩信息;否则撤销删除操作,并给出提示信息“不能删除计算机应用专业的学生信息!”。设计一条语句激活该触发器。
满分: 10分 得分: 10分
学生答案:
Create Trigger T_student
on 学生 for delete
As
If (select 专业 from deleted)=’计算机应用’
begin
rollback transaction
print ‘不能删除计算机应用专业的学生信息!’
end
else
delete 选课 where 学号=
(select 学号 from deleted)
激活:
Delete 学生 Where 学号=’10104′
老师点评:
24
基于上题数据库,设计函数“F_avg”,接受专业名和课程名,返回该专业学生该门课程的平均分。调用该函数获得“软件”专业学生“数据库”课程的平均分。
满分: 10分 得分: 10分
学生答案:
Create function F_avg(@dname varchar(20);@cname varchar(20))
Returns numeric(5;1)
as
begin
declare @grade numeric(5;1)
select @grade=AVG(成绩)
from学生;选课;课程
where 学生.学号=选课.学号
and 选课.课程号=课程.课程号
and 课程名=@cname and 专业=@dname
return @grade
end
调用:
select dbo. F_avg (‘软件’;‘数据库’) ‘软件专业数据库课程的平均分’
老师点评: