《SQL数据库管理与开发教程与实训》试题(D卷)一、单项选择题(每小题1分,共10分)1.D 2.A 3.D 4.D 5.C 6.C 7.D 8.D 9.C 10.D1.数据库应用系统是由数据库、数据库管理系统(及其开发工具)、应用系统、()和用户构成。
A.DBMS B.DBC.DBS D.DBA2.数据库管理系统的英文缩写是()。
A.DBMS B.DBSC.DBA D.DB3.在关系运算中,选取符合条件的元组是()运算。
A.除法B.投影C.连接D.选择4.数据库设计中的逻辑结构设计的任务是把()阶段产生的概念数据库模式变换为逻辑结构的数据库模式。
A.需求分析B.物理设计C.逻辑结构设计D.概念结构设计5.一个规范化的关系至少应当满足()的要求。
A.一范式B.二范式C.三范式D.四范式6.在实际数据库设计中,“学号”通常作为()存在。
A.数据结构B.数据存储C.数据项目D.处理过程7.SQL Server 2000中删除表中记录的命令是()。
A.DELETE B.SELECTC.UPDATE D.DROP8.运行命令SELECT ASCII(‘Alklk’)的结果是()。
A.48 B.32C.90 D.659.在SQL中,建立视图用的命令是 ( )。
A.CREATE SCHEMAB.CREATE TABLEC.CREATE VIEWD.CREATE INDEX10.在MS SQL Server中,用来显示数据库信息的系统存储过程是( )。
A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb二、判断题(每空1分,共10分)1.N 2.N 3.N 4.Y 5.Y 6.N 7.Y 8.N 9.Y 10.N1.连接、选择和投影三种关系运算具有相同的结果。
2.数据的安全性主要防范的对象是合法用户。
3. 数据库设计前只需选择数据库分析设计人员。
4. 恢复是利用冗余数据来重建数据库。
5.定义外键级级联是为了保证相关表之间数据的一致性吗?6.创建唯一性索引的列可以有一些重复的值?7.存储过程的输出结果可以传递给一个变量。
8.视图具有与表相同的功能,在视图上也可以创建触发器。
9.能在游标中删除数据记录。
10.SQL Server 2000不具有数据的导入与导出功能。
三、填空题(每空1分,共20分)1.数据库三个要素是___数据结构____、____数据操作____和____完整性约束_____。
2. 语句 select year('1931-9-18') 的执行结果是_____1931_______。
3.__域完整性__是指保证指定列的数据具有正确的数据类型、格式和有效的数据范围。
4.___触发器____是特殊类型的存储过程,它能在任何试图改变表中由触发器保护的数据时执行。
5.事务(Transaction)可以看成是由对数据库的若干操作组成的一个单元,这些操作要么___都完成___,要么__都取消____(如果在操作执行过程中不能完成其中任一操作)。
6. SQL Server 2000 采用的身份验证模式有___Windows身份验证_____模式和__混合______模式。
7.用户访问SQL Server数据库时,经过了两个___身份____验证和___权限____验证安全验证阶段。
8.SQL Server 2000提供的数据库备份方法有__完整_____数据库备份和___差异_____数据库备份、____事务日志________备份和____文件和文件组__________备份。
9.SQL Server代理主要由__操作员____、___作业___和警报来组成。
10.SQL Server复制把服务器分为__发布__服务器、__分发_服务器和订阅服务器三种。
四、简述题(每小题5分,共20分)1. 试述关系的含义和性质。
(7分)关系是笛卡尔积的有意义的子集,用二维表格表示;关系的性质如下:关系表中的每一列都是不可再分的基本属性;表中的各属性不能重名;表中的行、列次序不分前后;表中的任意两行不能完全相同。
2.什么是事务?(6分)事务(Transaction)可以看成是由对数据库若干操作组成的一个单元,这些操作要么都完成,要么都取消(如果在操作执行过程中不能完成其中任一操作)。
在SQL Server 2000中,事务是由一条或者多条Transact-SQL语句组成的一个工作单元,这些语句要么都正常执行,要么如果有其中任意一条语句执行失败被取消的话,这些语句的执行都被取消。
SQL利用事务机制保证数据修改的一致性,并且在系统出错时确保数据的可恢复性。
3. 事务控制语句的使用方法是什么?(7分)begin transaction…… -- A组语句序列save transaction 保存点1…… -- B组语句序列if @@error <> 0rollback transaction 保存点1 --回滚到:保存点1elsecommit transaction --提交A组语句,同时如果未回滚B组语句则提交B组语句。
五、设计题(1—6题每空2分,第7题10分,共40分)1.计算1+2+3+……+100的和,并使用PRINT显示计算结果。
DECLARE @I int,@sum int,@csum char(10)SELECT @I=1,@sum=0WHILE @I<=___100 _____BEGINSELECT @sum = ___@sum+@i_______SELECT @I=@I+1ENDSELECT @csum=convert(char(10),@sum)____print______ ’1+2+3+……+100=’ + @csum2.使用SQL语句创建一个班级表CLASS,属性如下:CLASSNO,DEPARTNO,CLASSNAME;类型均为字符型;长度分别为8、2、20且均不允许为空。
CREATE ____table____ CLASS(CLASSNO ___ char ___ (8) NOT NULL,DEPARTNO CHAR (2) NOT NULL,CLASSNAME CHAR (_20__) NOT NULL)3.声明一个名为CRSCOURSE的游标,并利用游标遍历,显示整个结果集。
USE XKDECLARE @COUNO VARCHAR(3),@COUNAME VARCHAR(20)____Declare crscourse cursor______________FOR SELECT COUNO,COUNAME FROM COURSE ORDER BY COUNO____open crscourse_____________________FETCH NEXT FROM CRSCOURSE INTO @COUNO,@COUNAMEWHILE @@FETCH_STATUS=0BEGINPRINT ’课程号:’+ @COUNO +’课程名称:’+ @CouNameFETCH NEXT FROM CRSCOURSE INTO @COUNO,@COUNAMEEND____close crscourse____________________DEALLOCATE CRSCOURSSE4.使用SQL语句在XK数据库中创建一个名为V_STUDENT的视图,该视图仅查看“STUDENT”表中“00电子商务”班的学生信息。
USE XKCREATE ____view_______ V_STUDENTASSELECT *FROM ___student_____ WHERE CLASSNO=’20000001’5.使用SQL语句在XK数据库中创建一个名为P_STUDENT的存储过程,该存储过程返回“STUDEND”表中所有班级代码为200000001的记录。
USE XKCREATE ___procedure________ P_STUDENTASSELECT *_____from_______ STUDENT WHERE CLASSNO=’20000001’6.创建触发器TEST,要求每当在STUDENT表中修改数据时,将向客户端显示一条“记录已修改”的消息。
USE XK____Alter trigger test_____________ON STUDENT ____for update____________AS PRINT ‘记录已修改’7.定义事务向[学生]数据库的[选课表]中插入学号=‘20030021’的多条记录,并检验若报名课程超过4门,则回滚事务,即报名无效,否则成功提交。
选课表(学号,课号,报名号)假设要插入的记录为以下三条:‘20030021’,‘01’,1 ‘20030021’,‘02’,2 ‘20030021’,‘03’,3根据以上要求编写程序,并指出本题定义的事务是否成功提交。
Use 学生Begin transactionInsert 选课表(学号,课程号,报名号) values(‘20030021’,‘01’,1) Insert 选课表(学号,课程号,报名号) values(‘20030021’,‘02’,2) Insert 选课表(学号,课程号,报名号) values(‘20030021’,‘03’,3) Declare @num intSet @num=(select count(*) from 选课表 where 学号=‘20030021’)If @num>4beginRollback transactionPrint ‘超过报名门数!’endElseBeginCommit transactionPrint ‘报名成功!’endgo本题定义的事务成功提交。