Advertisement

数据库练习带答案

阅读量:

本次考试涵盖了数据库应用系统、SQL Server 2000的相关知识,包括概念结构设计、关系运算、存储过程、触发器、事务控制、视图、游标、事务提交、数据库设计等。单项选择题主要测试学生对数据库管理系统的了解,涉及概念结构设计、关系运算、逻辑结构设计、规范化要求、学号的存储位置、SQL语句、视图、触发器、事务控制和数据库安全。判断题考察事务、安全性和数据完整性等概念。填空题涉及数据库要素、域完整性、触发器、事务执行、身份验证、备份类型、代理、复制类型等。简述题包括关系的含义、事务的定义、事务控制语句的使用方法。设计题涉及SQL语句的编写、视图和存储过程的创建、游标的应用、事务的定义和提交情况。

一、单项选择题(每小题1分,共10分)

数据存储层

数据存储层

A.DBMS B.DB

C.DBS D.DBA

2.数据库管理系统的英文缩写是( a )。

A.DBMS B.DBS

C.DBA D.DB

3.在关系运算中,选取符合条件的元组是( d )运算。

A.除法 B.投影

C.连接 D.选择

4.数据库设计中的逻辑结构设计的主要任务是负责将第d阶段产生的概念数据库模式转变为逻辑结构的数据库模式。

A.需求分析部分 B.物理设计章节

C.逻辑结构设计 D.概念结构设计

5.一个规范化的关系至少应当满足( c )的要求。

A.一范式 B.二范式

C.三范式 D.四范式

6.在实际数据库设计中,“学号”通常作为( c )存在。

A.数据结构 B.数据存储方案

C.数据项目 D.处理过程

7.SQL Server 2000中删除表中记录的命令是( a )。

A.DELETE B.SELECT

C.UPDATE D.DROP

8.运行命令SELECT ASCII(‘Alklk’) 的结果是( d )。

A.48 B.32

C.90 D.65

9.在SQL中,建立视图用的命令是 ( c )。

SCHEMA TABLE

VIEW INDEX

10.在MS SQL Server中,用来显示数据库信息的系统存储过程是( d )。

A. sp_dbhelp B. sp_db

C. sp_help D. sp_helpdb

二、判断题(每空1分,共10分)

1.连接、选择和投影三种关系运算具有相同的结果。n

2.数据的安全性主要防范的对象是合法用户。n

3. 数据库设计前只需选择数据库分析设计人员。n

4. 恢复是利用冗余数据来重建数据库。y

5.定义外键级级联是为了保证相关表之间数据的一致性吗y

6.创建唯一性索引的列可以有一些重复的值n

7.存储过程的输出结果可以传递给一个变量。y

8.视图具有与表相同的功能,在视图上也可以创建触发器。n

9.能在游标中删除数据记录。y

10.SQL Server 2000不具有数据的导入与导出功能。n

三、填空题(每空1分,共20分)

1.数据库三个要素是___数据结构_______、数据操作______和 完整性约束________。

2. 语句 select year('1931-9-18') 的执行结果是__1991__________。

3.___域完整性_______是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。

4.___触发机制_______是特定功能的存储过程,在任何试图修改表中被触发器保护的数据时,触发器会被激活。

事务(Transaction)可以被视为由多个数据库操作组成的单元,这些操作要么_一次性完成_____,要么 全部撤销________(如果在执行过程中无法完成任何一个操作)。

6. SQL Server 2000 采用的身份验证模式有_ windows身份验证_____模式和___混合____模式。

在身份认证和权限控制方面,用户访问SQL Server数据库时经历了两个安全验证环节。

SQL Server 2000提供以下四种数据库备份方案:数据库备份、存储过程备份、表备份和视图备份方案。

9.SQL Server代理主要由______、______和警报来组成。

10.SQL Server复制把服务器分为______服务器、______服务器和订阅服务器三种。

四、简述题(每小题5分,共20分)

1. 试述关系的含义和性质。(7分)

2. 什么是事务(6分)

3. 事务控制语句的使用方法是什么(7分)

五、设计题(1—6题每空2分,第7题10分,共40分)

1.计算1+2+3+……+100的和,并使用PRINT显示计算结果。

DECLARE @I int,@sum int,@csum char(10)

SELECT @I=1,@sum=0

WHILE @I<=100____

BEGIN

SELECT @sum = __________

SELECT @I=@I+1

END

SELECT @csum=convert(char(10),@sum)

__________ ’1+2+3+……+100=’ + @csum

通过SQL语句指令,建立一个班级表CLASS,其属性包括CLASSNO、DEPARTNO、CLASSNAME三个字段;所有字段均为字符型字段,长度分别为8、2、20,且所有字段均不能为空。

CREATE ________ CLASS

(CLASSNO ______ (8) NOT NULL,

DEPARTNO CHAR (2) NOT NULL,

CLASSNAME CHAR (____) NOT NULL

3.声明一个名为CRSCOURSE的游标,并利用游标遍历,显示整个结果集。

USE XK

DECLARE @COUNO VARCHAR(3),@COUNAME VARCHAR(20)


FOR SELECT COUNO,COUNAME FROM COURSE ORDER BY COUNO


FETCH NEXT FROM CRSCOURSE INTO @COUNO,@COUNAME

WHILE @@FETCH_STATUS=0

BEGIN

PRINT ’课程号:’+ @COUNO +’课程名称:’+ @CouName

FETCH NEXT FROM CRSCOURSE INTO @COUNO,@COUNAME

END


DEALLOCATE CRSCOURSSE

用于在XK数据库环境中生成一个名为V_STUDENT的视图,该视图仅限于STUDENT表中00电子商务班的学生信息的检索。

USE XK

CREATE ____________ V_STUDENT

AS

SELECT *

FROM ____________

WHERE CLASSNO=’’

编写相应的SQL语句,在XK数据库中创建名为P_STUDENT的存储过程,该过程用于检索‘STUDEND’表中班级代码为1的所有记录。

USE XK

CREATE ____________ P_STUDENT

AS

SELECT *

____________ STUDENT

WHERE CLASSNO=’’

设计一个名为TEST的触发器,每当STUDENT表的数据被修改时,向客户端发出一条“记录已修改”的信息提示。

USE XK


ON STUDENT


AS

PRINT ‘记录已修改’

将事务提交至[学生]数据库的[选课表]中,插入学号为空的多条记录。随后,验证若报名课程数量超过4门,则事务重滚,导致报名无效;若数量在允许范围内,则成功提交。

选课表(学号,课号,报名号)

假设要插入的记录为以下三条:

‘’,‘01’,1 ‘’,‘02’,2 ‘’,‘03’,3

根据以上要求编写程序,并指出本题定义的事务是否成功提交。

一、单项选择题

1.D 2.A 3.D 4.D 5.C 6.C 7.D 8.D 9.C 10.D

二、判断题

1.N 2.N 3.N 4.Y 5.Y 6.N 7.Y 8.N 9.Y 10.N

三、填空题

1.数据结构、数据操作、完整性约束

2.1931

3.域完整性

4.触发器

5.都完成、都取消

6.Windows身份验证、混合

7.身份、权限

8.完整、差异、事务日志、文件和文件组

9.操作员、作业

10.发布、分发

四、简述题

1. 关系是笛卡尔积的有意义的子集,用二维表格表示;

关系的性质如下:

关系表中的每一列都是不可再分的基本属性;

表中的各属性不能重名;

表中的行、列次序不分前后;

表中的任意两行不能完全相同。

事务(Transaction)可以被视为对数据库多个操作的集合,这些操作要么全部完成,要么全部取消(如果在操作执行过程中无法完成任何一个操作)。在SQL Server 2000中,事务是由一条或多条Transact-SQL语句构成的工作单元,这些语句要么全部正常执行,要么如果其中任意一条语句执行失败被取消,则所有语句的执行都会被取消。SQL通过事务机制确保数据修改的一致性,并在系统发生故障时保证数据的可恢复性。

3.事务控制语句的使用方法

begin transaction

…… -- A 组语句序列

save transaction 保存点1

…… -- B 组语句序列

if @@error <> 0

rollback transaction 保存点1 --回滚到:保存点1

else

_commit transaction --__执行A组语句,同时当未回滚B组语句时,执行B组语句。

五、设计题

1.100 @sum+@i print

2.table char 20

3.Declare crscourse cursor

open crscourse

close crscourse

4.view

student

5.procedure

from

6.Alter trigger test

for update

7. Use 学生

Begin transaction

Insert 选课表(学号,课程号,报名号) values(‘’,‘01’,1)

Insert 选课表(学号,课程号,报名号) values(‘’,‘02’,2)

Insert 选课表(学号,课程号,报名号) values(‘’,‘03’,3)

Declare @num int

Set @num=(select count(*) from 选课表 where 学号=‘’)

If @num>4

begin

Rollback transaction

Print ‘超过报名门数!’

end

Else

Begin

Commit transaction

Print ‘报名成功!’

end

go

本题定义的事务成功提交。

全部评论 (0)

还没有任何评论哟~