一、选择题(每题2分,共30分)
1.为了使索引键的值在基本表中唯一,在创建索引的语句中应使用保留字( d )。
A .UNIQUE B. CLUSTER C .DISTINCT D. UNION
2.创建索引是为解决关系数据库中( b )问题而引入的。
- 插入、删除异常和数据冗余 B. 提高查询速度
- 减少数据操作的复杂性 D. 保证数据的安全性和完整性
3.关系数据库中,为了简化用户的查询操作,而又不增加数据冗余,常用方法是创建( c )。
- 视图 B. 新表 C. 索引 D. 属性
4.以下关于视图的描述中,错误的是( b )。
A . 视图是虚表
- 可以对任何视图进行任意的修改操作
C .视图能够对数据库提供安全保护作用
- 视图对重构数据库提供了一定程度的独立性
5.下列关于视图的描述,( a )是不正确的。
- 视图对应外模式 B. 视图是虚表
- 视图可以加快查询的执行速度 D. 视图可以简化查询语句的编写
6.数据的安全性是指( a )。
- 防止数据被非法使用 B. 数据的存储和使用数据的程序无关
- 数据的正确性、一致性 D. 减少重复数据
7.DBMS提供授权功能来控制不同用户访问数据的权限,这是为了实现数据库的( c )。
- 可靠性 B. 一致性 C. 安全性 D. 独立性
8.下列各项,( a )不属于SQL Server的安全控制体系结构。
- 登录名 B. 数据库用户 C. 规则 D. 数据库对象权限
9.在SQL Server中,为便于管理用户及权限,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为( b )。
- 账户 B. 角色 C. 登录名 D. SQL Server用户
10.SQL Server中,要定义产品的数量随出入库单的增加而变化,应使用( c )实现。
- 规则 B. CHECK约束 C.触发器 D.存储过程
11.日志文件是用于记录( b )。
- 程序运行的过程 B. 对数据库所有的更新操作
- 程序执行的结果 D. 用户对数据库的访问信息
12.下列各个T-SQL标识符,( c )是合法的。
- _AbC B. A B C. AS D. 2S
13.下列有关T-SQL中局部变量的说法,(b )是不正确的。
- 局部变量要先声明后使用 B. 局部变量的作用域是一个批处理
- 局部变量名以@开头 D. 局部变量赋值语句形如:名=值
14.下列有关SQL Server中存储过程的说法,( b )是不正确的。
- 存储过程可以有多个输入参数 B. 存储过程可以有多个输出参数
- 系统存储过程的前缀是sp_ D. 存储过程由事件驱动执行
15.下列有关SQL Server中触发器的说法,( c )是不正确的。
- 触发器由事件驱动执行 B. 创建触发器时必须定义驱动事件
- 执行触发器时要说明触发器名 D. 触发器能对表实现复杂的数据完整性约束
二、应用题(共70分)
- (每小题5分,共20分)
设工程-零件数据库有4个基本表,
供应商(供应商代码,名称,城市)
零件(零件代码,零件名,颜色,产地)
工程(工程代码,工程名,预算)
供应情况(供应商代码,零件代码,工程代码,数量)
请使用T-SQL语句完成下列操作。
(1)为“造船厂”工程建立供应情况视图“V_SPJ”,包括供应商代码、供应商名称、零件代码、供应数量等信息。
Create view V_SPJ
As
Select a.供应商代码,a.名称 , b.零件代码,b.数量 from 供应商 as a join 供应情况 as b on
- 供应商代码 = b.供应商代码
(2)在工程表的预算和工程名上创建组合索引“IX_J”,预算降序,工程名升序。
create index 索引名 on 工程(预算 desc);
create index 索引名 on 工程(工程名 asc);
(2)创建规则对象“R_COLOR”,限制“颜色”只能是“红”、“黄”、“蓝”,并将该规则绑定到零件表的“颜色”列上。
create rule R_COLOR as 零件.颜色 in (‘红’,’黄’,’蓝’)
(4)创建默认值对象“D_CITY”,其值为“南京”,将其绑定到供应商的“城市”列上。
ALTER TABLE 供应商
ADD CONSTRAINT D_CITY名 DEFAULT(‘南京’) FOR 城市
- (每小题10分,共50分)
设学生管理数据库有3个基本表,
学生(学号,姓名,性别,专业,总学分)
课程(课程号,课程名,学分)
选课(学号,课程号,分数)
(1)创建并执行存储过程p_course_grade,将指定课程成绩大于55小于60的都提高到60分,并显示该课程的选修学生姓名和成绩。执行该存储过程,以修改并显示004号课程的成绩信息。
USE
学生信息
CREATE TABLE
学生 (
学号
INT CONSTRAINT pk_xh PRIMARY KEY
,姓名
CHAR(10) NOT NULL CONSTRAINT uk_xm UNIQUE,
性别 CHAR(2) NULL CONSTRAINT df_xb DEFAULT ’
男’,专业 CHAR(20) NULL,班级CHAR(12) NULL,
备注TEXT NULL)
(2)创建存储过程p_grade,查询指定学号和课程号的分数,作为结果返回。执行该存储过程,查询10103号学生001号课程的分数,要求根据返回信息做如下处理:如返回空值显示“无指定成绩信息”,否则显示“成绩是XX”。
select Student.sno,sname,isnull(lname,”) as lname,isnull(grade,0) as grade
from Student left join SC on Student.sno=SC.sno
left join Lesson on SC.lno=Lesson.lno and
where SC.sname=@sname
(3)创建触发器“T_credit”,功能为:当用户在选课表中插入或修改一条学生成绩信息时,自动更新学生表中该生的总学分(设成绩60分以上能得到学分)。设计一条语句激活该触发器。
select c.studentid,c.studentname,a.coursename,case when result>=80 then ”优秀‘’
when result >=60 then”及格’’ else ”不及格‘’ end result -from sc a left join student b on a.studentid=b.studenid
left join course c on a.courseid=c.courseid
where c.coursename=’+@coursename+’
‘)
(4)创建触发器“T_student”,功能为:当删除学生表中的某条学生信息时,如果该生不是“计算机应用”专业的学生,则自动删除选课表中该学生的成绩信息;否则撤销删除操作,并给出提示信息“不能删除计算机应用专业的学生信息!”。设计一条语句激活该触发器。
select sum(chengji1 +chengji2 + … + chengjiN )/ n as num,xuefen into
@num, @xuefen from table where xuehao = shuruxuehao;/*chengji 是各科成绩的字段*/
if num >=60 then
set shuchuxuefen = @xuefen;
else
set shuchuxuefen = 0;
(5)设计函数“F_avg”,接受专业名和课程名,返回该专业学生该门课程的平均分。调用该函数获得“软件”专业学生“数据库”课程的平均分。
SELECT `cno`,`cname` FROM table WHERE sno=sno;
END;