数据库考试习题及答案 (2)

A. 提高查询数据的速度 B. 提高数据库安全性 C. 简化复杂查询 10. 在SQL Server 2005中,索引的顺序和表中记录的物理顺序相同的索引时(C )。 A. 主键索引 B. 非聚集索引 C. 聚集索引 D.唯一索引 11. 下面对索引的相关描述正确的是(D)。//不确定

A. 经常被查询的列不适合建索引 B.小型表适合建索引

C. 有很多重复值的列适合索引值 D. 是外键或主键的列不适合建索引 12. 在使用CREATE INDEX命令创建索引时,FILLFACTOR选项定义的是(A)。 A. 填充因子 B. 误码率 C. 冗余度 D. 索引页的填充率 13. 对视图的描述错误的是(D)。

A. 视图是一张虚拟表 B. 视图定义包含TOP子句时才能设置排序规则

C. 可以像查询表一样查询视图 D. 被修改的视图只能引用一个基表的列 14. WITH CHECK OPTION属性对视图有(A)。

A. 进行检查约束 B. 进行删除监测 C.进行更新监测 D.进行插入监测 简答题

15. 按照索引的存储结构划分,索引分为哪几种?按照是否允许在索引列中输入重复值,索引分为哪几种?

存储结构:聚集和非聚集 ,是否允许重复:唯一和非唯一

16. SQL SERVER对在视图上进行INSERT、UPDATE、DELETE操作,主要有哪些限制?

在进行插入操作时:

1、 用户必须具备插入数据的相关权限 2、 试图只能引用一个基表的列

3、 试图所包含的列必须直接引用表列中的基础数据,不能通过聚合函数或计算等方式派生

4、 Insert语句不允许为空值

5、 必须符合在相关列上定义的约束条件

6、 试图中不能包含DISTINICT,GROUP BY或HAVING子句

7、 在试图定义中使用了WITH CHECK OPTION,插入时将检查是否符合定义视图中SELECT语句所设置的条件 在更新时:

1、 修改视图中的数据时,不能同时修改两个或多个基表 2、 当视图来自多个基表时,通常只能对非主属性进行修改 3、 试图中被修改的列必须直接引用基表中的列,不能通过聚合函数或计算等方式派生 在删除时:

试图只能引用一个基表的列,且删除操作必须满足基表中定义的约束条件

第八章习题

选择题

1. 以下描述不正确的是 ( D )

A.存储过程能够实现较快的执行速度。 B.内嵌表值型函数相当于一个带参数的视图。

C.不指定所有者时,调用标量函数会出错。 D.可以通过视图更改任意基表 2. 在MS SQL Server中,用来显示数据库信息的系统存储过程是( D )。 A. sp_dbhelp B. sp_db C. sp_help D. sp_helpdb 3. 触发器可以创建在( AC )中。

A. 表 B. 过程 C. 数据库 D. 函数

4. 以下触发器是当对[表1]进行( D )操作时触发。 Create Trigger abc on 表1 For insert , update , delete As ……

A.只是修改 B.只是插入 C.只是删除 D.修改、插入、删除 5. 执行带参数的过程,正确的方法为( A)。

A. 过程名 参数 B. 过程名(参数) C.过程名=参数 D.A,B,C三种都可以 6. 执行带参数的过程,正确的方法为( A )。

A. 过程名 参数 B. 过程名(参数) C.过程名=参数 D.A,B,C三种都可以 7. 触发器可引用视图或临时表,并产生两个特殊的表是( A )。

A.Deleted、Inserted B. Delete、Insert C. View、Table D. View1、table1 8. 在SQL Server 数据库中,下面调用存储过程的语句错误的是(B)。 A. EXEC proc_stu @sum OUTPUT,64,78 B. EXEC proc_stu @sum OUTPUT,@total output,78 C. EXEC proc_stu @sum OUTPUT,604 D. EXEC Calculate @sum OUTPUT,@total output

9. 在SQL SERVER中,声明并创建以下存储过程,正确调用该存储过程的的语句是(BC)。

CREATE PROCEDURE PRO @passNum int OUTPUT, @passPoint int=60 AS

Select @passNum=count(*) From stuTable Where point >@passPoint GO A. Declare @sum int

EXEC PRO @passNum,70 B. Declare @sum int

EXEC PRO @sum output,70 C. Declare @sum int EXEC PRO @sum output D. EXEC PRO 70

10. 在SQL Server中,创建如下存储过程: create proc stu_exam

@writtenExam int=null as

if @writtenExam is null begin

print '请输入笔试成绩及格线' return end

select * from student where stu_id in (select stu_id from stu_marks

where writtenExam>@writtenExam) GO

下列选项正确的是( C )。 A. 执行EXEC stu_exam语句,控制台显示所有笔试成绩及格的学生信息记录集 B. 存储过程(stu_exam)代码存在语法错误 C. 执行EXEC stu_exam语句,控制台显示“请输入笔试成绩及格线” D. 执行EXEC stu_exam 75语句,控制台显示“请输入笔试成绩及格线”

11. 在SQL语言中,如果要建立一个工资表包含职工号,姓名,职称。工资等字段。若要保证工资字段的取值不低于800元,最合适的实现方法是:(B) A.在创建工资表时为”工资“字段建立缺省

B.在创建工资表时为”工资“字段建立检查约束 C.在工资表建立一个触发器

D.为工资表数据输入编写一个程序进行控制 12. 你是一个出版公司的数据库开发人员,对特定的书名的每天的销售情况建立了如下的存储过程:

CREATE PROCEDURE get_sales_for_title title varchar(80), @ytd_sales int OUTPUT AS

SELECT @ytd_sales = ytd_sales FROM titles

WHERE title = @title IF @@ROWCOUNT = 0 RETURN(-1) ELSE

RETURN(0)

另外建立了一个脚本执行这个存储过程,如果执行成功,将返回对应于书名的每天的销售情况的报表,如果执行失败,将返回“No Sales Found”,怎样建立这个脚本? ( C )

A. DECLARE @retval int DECLARE @ytd int

EXEC get_sales_for_title ‘Net Etiquette’, @ytd IF @retval < 0

PRINT ‘No sales found’ ELSE

PRINT ‘Year to date sales: ’ + STR (@ytd) GO

B. DECLARE @retval int DECLARE @ytd int

EXEC get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT IF @retval < 0

PRINT ‘No sales found’ ELSE

PRINT ‘Year to date sales: ’ + STR (@ytd) GO

C. DECLARE @retval int DECLARE @ytd int

EXEC get_sales_for_title ‘Net Etiquette’,@retval OUTPUT IF @retval < 0

PRINT ‘No sales found’ ELSE

PRINT ‘Year to date sales: ’ + STR (@ytd) GO

D. DECLARE @retval int DECLARE @ytd int

EXEC @retval = get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT IF @retval < 0

PRINT ‘No sales found’ ELSE

PRINT ‘Year to date sales: ’ + STR (@ytd) GO

13. 假定你是一个保险公司的数据库开发人员,公司的保单信息存储在SQL Server 2000数据库中,你使用以下脚本建立了一个名为Policy的表: CREATE TABLE Policy (

PolicyNumber int NOT NULL DEFAULT (0), InsuredLastName char (30) NOT NULL, InsuredFirstName char (20) NOT NULL, InsuredBirthDate datetime NOT NULL, PolicyDate datetime NOT NULL, FaceAmount money NOT NULL,

CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber) )

13.每次公司销售出一份保单,Policy表中就增加一条记录,并赋予其一个新的保

联系客服:779662525#qq.com(#替换为@)