1、第九章 SQL Server 数据库简单应用一、单选题1.使用“CREATE DATABASE AAA”命令所建立数据库文件的初始大小是(A)字节。A. 1M B. 2M C. 3M D. 4M2.下面关于索引的描述不正确的是(B) 。A. 索引是一个指向表中数据的指针 B. 索引是在列上建立的一种数据库对象C. 索引的建立和撤消对表的数据毫无影响 D. 表的建立和撤消对索引毫无影响3.下面关于聚集索引和非聚集索引说法正确的是(B) 。A. 每个表只能建立一个非聚集索引 B. 非聚集索引需要较多的硬盘空间和内存C. 一张表上不能同时建立聚集和非聚集索引 D. 一个复合索引只能是聚集索引4.“C
2、reate Unique Index AAA On 学生表(学号) ”将在学生表上创建名为 AAA的(A) 。A. 惟一索引 B. 聚集索引 C. 复合索引 D. 唯一聚集索引5.下列标识符可以作为局部变量使用(C) 。A. Myvar B. My var C. Myvar D. My var6. Transact SQL支持的程序结构语句主要有(A) 。A. BeginEnd B. IfThenELSE C. Do Case D. Do While7.属于事务控制的语句是(A) 。A. Begin Tran、Commit、RollBack B. Begin、Continue、EndC. Cr
3、eate Tran、Commit、RollBack D. Begin Tran、Continue、End8. SQL Server触发器主要针对下列语句创建(B) 。A. SELECT、INSERT、DELETE B. INSERT、UPDATE、DELETEC. SELECT、UPDATE、INSERT D. INSERT、UPDATE、CREATE9.下面关于索引的描述不正确的是(B) 。A. 索引是一个指向表中数据的指针B. 索引是在元组上建立的一种数据库对象C. 索引的建立和撤消对表中的数据毫无影响D. 表被撤消时将同时撤消在其上建立的索引10. 以下哪种情况应尽量创建索引(A) 。A
4、. 在 where子句中出现频率较高的列 B. 具有很多 NULL值的列C. 记录较少的基本表 D. 需要更新频繁的基本表11. SQL Server2000提供的单行注释语句是使用(B)开始的一行内容。A. “/*” B. “-” C. “” D. “/”12. 不属于 SQL Server2000系统全局变量的是(D) 。A. Error B. Connections C. Fetch_Status D. Records13. 下列 SQL Server2000语句中出现语法错误的是(D) 。A. DECLARE Myvar INT B. SELECT * FROM AAAC. CREAT
5、E DATABASE AAA D. DELETE * FROM AAA14.索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它能够加快数据的(D)速度。A. 插入 B. 修改 C. 删除 D. 查询15. 下列命令不能执行的是(B) 。A. SELECT * FROM select B. SELECT * FROM MyTableC. SELECT * FROM MyTable D. SELECT * FROM MyTable二、填空题1.在 SQL Server中主要是通过(查询分析器)实用工具运行 Transact SQL语句。2.SQL Server可以通过查询分析器和
6、(企业管理器)两种工具完成数据库的管理工作。3.在一个已存在数据的表中增加一列,一定要保证所增加的列允许(Null)值。4.Transact-SQL语句中将日期时间型数据类型作为(字符)型处理,需要用单引号括起来。5.可以将视图理解为一组存储在 SQL Server数据库中的经过预编译的(SELECT)语句。6.SQL Server中引入索引主要是为了(提高查询的效率),保证数据的惟一性并加快表的查询速度。7.索引一经创建就完全由 SQL Server2000系统(自动)选择和维护。8.从是否改变基本表记录的物理位置角度可将索引分为(聚集)和(非聚集索引)两类。9.注释是一些说明性的文字,不是
7、(可执行)语句,不参与程序的编译。10.一个局部变量的使用范围局限于(批处理)内,即两个 GO语句之间的那一部分。11.触发器是一种特殊的(存储过程),基于表而创建,主要用来保证数据的完整性。12.在一个表中最多只能有一个关键字为(PRIMARY KEY)的约束,关键字为 FOREIGN KEY的约束可以出现(多)次。13.CHECK约束被称为(检查)约束,UNIQUE 约束被称为(唯一值)约束。14.使用一种约束时,可以使用关键字(CONSTRAINT)和标识符()的选项命名该约束,也可以省略该选项由系统自动命名,因为用户很少再使用其约束名。15. 当一个表带有约束后,执行对表的各种(更新)
8、操作时,将自动(检查)相应的约束,只有符合约束条件的合法操作才能被真正执行。16. 在 SQL Server2000中,数据库的安全机制分为 4个等级,分别为客户端(操作系统)的安全、数据库的(登录)安全、数据库使用安全和数据库对象的使用安全。17. 数据库的安全管理问题归结为对(锁)和(钥匙)的管理问题。18. 要访问 SQL Server2000数据库服务器,用户必须提供正确的(登录账号)和(口令)。19. 对用户授予和收回数据库操作的语句关键字分别为(GRANT)和(REVOKE)。20. 在授予用户访问权限的语句中,所给表名选项以关键字(ON)开始,所给用户名选项以关键字(TO)开始。
9、21. 在收回用户访问权限的语句中,所给表名选项以关键字(ON)开始,所给用户名选项以关键字(FROM)开始。22. 使用游标取数和释放游标的语句关键字分别为(FETCH)和(DEALLOCATE)。23. 打开和关闭游标的语句关键字分别为(OPEN)和(CLOSE)。 24. 判断使用 FETCH语句读取数据是否成功的全局变量为(FETCH_STATUS)。 25. 使用游标对基本表进行修改和删除操作的语句中,WHERE 选项的格式为“WHERE (CURRENT) OF ()。 26. 每次执行使用游标的取数、修改或(删除)操作的语句时,能够对表中的(单)个记录进行操作。 27. 在 SQ
10、L Server2000中,一个事务是一个(并发控制)的单位,它把必须同时执行或不执行的一组操作(捆绑)在一起。 28. 在 SQL Server2000中,一个事务处理控制语句以关键字(BEGIN TRAN)开始,以关键字(COMMIT TRAN)或(ROLLBACK TRAN)结束。29.每个存储过程可以包含(多)条 Transact-SQL语句,可以在过程体中的任何地方使用(RETURN)语句结束过程的执行,返回到调用语句后的位置。 30. 建立一个存储过程的语句关键字为(CREATE PROC),执行一个存储过程的语句关键字为(EXEC)。 31. 在一个存储过程定义的 AS关键字前可
11、以定义该过程的(参数),AS 关键字之后为该过程的(过程体)。 32.触发器是一种特殊的存储过程,它可以在对一个表上进行(插入)、(删除)和(更新)操作中的任一种或几种操作时被自动调用执行。33. 单行或行尾注释的开始标记为(-),多行注释的开始标记为(/*),结束标记为(*/)。 34. 局部变量的开始标记为(),全局变量的开始标记为()。 35. 每条(SELECT)语句能够同时为多个变量赋值,每条(SET)语句只能为一个变量赋值。 36. 定义局部变量的语句关键字为(DECLARE),被定义的各变量之间必须用(逗号)字符分开。37. 在 SQL Server2000中,每个程序块的开始标
12、记为关键字(BEGIN),结束标记为关键字(END)。 38. 在 SQL Server2000中,前后相邻的语句之间可以使用(空格)、(分号)或(换行)字符分开。 39. 在 SQL Server2000 中, CASE结构是一个(函数),只能作为一个(表达式)使用在另一个语句中。 40. 在 SQL Server2000 中, CASE函数具有(2)种格式,每种格式中可以带有(多)个 WHEN选项,可以带有(一)个 ELSE选项。 41. 在条件结构的语句中,关键字 IF和 ELSE之间和 ELSE之后,可以使用(单条)语句,也可以使用具有(BEGINEND)格式的语句块。 42. 在循环
13、结构的语句中,当执行到关键字(BREAK)后将终止整个语句的执行,当执行到关键字(CONTINUE)后将结束一次循环体的执行。43. 在 SQL Server2000中,打开一个数据库使之成为当前库,有(2)种方法,其中之一使用的命令关键字为(USE)。 44. 索引可以由系统根据约束条件自动建立,也可以由用户通过命令或菜单方式建立,但它的(打开)和(重建)将根据需要由系统自动实现,无须用户过问。 45. 索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它将降低数据的(插入)、(修改)、(删除)速度。 46. 基本表中的记录数越(多),每条记录占用的字节数越(多)时,使用索引
14、就越有利。 47. 创建索引的命令关键字为(CREATE INDEX),删除索引的命令关键字为(DROP INDEX)。 48. 在索引命令中使用关键字 CLUSTERED或 NOCLUSTERED分别表示将建立的是(聚集)或(非聚集)索引。 49. 在基本表的某个列上建立索引,可以使基本表中的所有记录按该列值的(升序)或(降序)排列。 50. 当指定基本表中某一列或若干列为主码时,则系统将在这些列上自动建立一个(非空)、(唯一)和(聚集)的索引。 51. 当指定基本表中某一列或若干列为 UNIQUE约束时,则系统将在这些列上自动(建立)一个唯一值(索引)。 52. 若规定基本表中某一列或若干
15、列为非空和唯一值双重约束,则这些列就是该基本表的(备用)码,若只规定为唯一值约束,则(不允许)空值重复出现。53.使用 create database命令定义一个数据库,包括定义(数据)文件和(日志)文件两个部分。 54.使用 create database命令定义一个数据库,定义其数据文件以关键字(ON)开始,定义日志文件以关键字(LOG ON)开始。55.SQL Server2000支持两种形式的变量,即(局部变量)和(全局变量)。 56.SQL Server2000中为局部变量赋值的语句是(SELECT)和(SET)。57. 聚集索引与非聚集索引相比,查询速度更(快)。58. 索引会影响
16、对基本表的(插入)、(删除)和(修改)等操作的速度。59.数据库备份和恢复的 Transact-SQL语句分别是(Backup Database)和(Restore Database)。 60. 在一个已存在数据的表中增加不带默认值的列,一定要保证所增加的列允许(Null)值。61. 对表中记录的维护工作主要有增加、(删除)和(修改)操作,它们均可通过企业管理器或 Transact-SQL语句完成。 62. 在 Transact-SQL语句中需要把日期时间型数据常量用(单引号)括起来。 63. 找回被删除表的惟一方法是事先做好数据库的(备份)工作。 64. 可以将视图理解为存储在 SQL Se
17、rver2000数据库中的一条经过预编译的(SELECT)语句。65.(索引)是一种常用的改善数据库性能的技术。 66. SQL Server2000中引入索引主要是为了加速(查询)速度,也可保证数据的惟一性。 67. 索引可以加速 selcet语句中 Order By和(Group By)选项的执行速度。三、应用题假设存在名为 AAA的数据库,它包括 Students(学号 char 8,姓名 varchar 8,年龄 int,专业 varchar 20,入学日期 DateTime)和 Score(学号 char 8,课程名 varchar 10,成绩 numeric(4,2))两张表。请使
18、用 Transact SQL完成以下任务。1.创建 AAA数据库,所有参数取默认值。create DataBase AAA2.创建 Students表。create table students (学号 char(8) primay key,姓名 varchar(8),年龄 int,专业 varchar(20),入学日期 datetime)3.将 AAA数据库的初始大小更改为 5MB,最大空间限定为 10MB。ALTER DATABASE AAAMODIFY FILE (NAME = AAA_data,SIZE = 5,MAXSIZE=10)4.假设 Students表中已存在大量学生记录,求
19、所有“计算机软件”专业学生的平均年龄,如果平均年龄大于 19则显示“平均年龄超过 19”,否则显示“平均年龄没有超过 19”。IF (Select Avg(年龄) From Students Where 专业=计算机软件 )19SELECT 平均年龄超过 19ELSESELECT 平均年龄没有超过 19 5.显示出该 Score 表中的全部数据,并要求当成绩为空时显示数值-1。Select 学号,课程名,isnull(成绩,-1)From score6.显示出当前日期中的年份和月份数据。Select year(getdate(),month(getdate()7.显示出一个整数 25和当前日期
20、 getdate()的值分别占用的字节数。Select datalength(25),datalength(getdate()5.请说明以下语句的完成的功能:SELECT * FROM StudentsWHERE DATEPART(year,入学日期) =DATEPART(year,GETDATE()从 Students表中查询出所有当年(系统时间)入学的学生记录。6.请完成以下 Transact SQL批处理,并说明它完成的功能。(DECLARE MyNO CHAR(8)(SET)MyNo=20030001IF (SELECT 专业 FROM Students WHERE 学号=MyNO)=
21、计算机软件BEGINSELECT AVG(成绩) AS 平均成绩FROM ScoreWHERE 学号=MyNOENDELSE PRINT 学号为 +MyNO+的学生不存在或不属于软件专业GO首先定义一个名为MyNo 的局部变量,并给它赋初值,如果MyNo 属于计算机软件专业,则显示出平均成绩,否则显示“学号为MyNo 的学生不存在或不属于软件专业” 。7. create procedure xxk1asbeginselect *from students x,score ywhere x.学号=y.学号end显示出 AAA 库中所有学生的记录信息及选课成绩8. create procedure
22、 xxk3asbeginselect 学号,avg(成绩) as 平均成绩from scoregroup by 学号end显示出 AAA 库中每个学生的平均成绩9. create procedure xxk4(a char(8),b varchar(10),c numeric(5,2)asbeginupdate scoreset 成绩=cwhere 学号=a and 课程名=bend修改 score 表中学号为a 的值、课程名为 b 的值的学生的成绩为c 的值10. create procedure xxk5(a char(8),b varchar(10),c numeric(5,2)asbegininsert into scorevalues(a,b,c)end向 score 表中插入学号为a 的值、课程名为b 的值、成绩为c 的值的学生成绩记录11. create procedure xxk6(a char(8),b varchar(10)asbegindelete from scorewhere 学号=a and 课程名=bend从 score 表中删除学号为a 的值、课程名为b 的值的学生成绩记录