SQL Server 期末考试题目及答案
一、单选题
1. Microsoft公司的SQL Server2000数据库管理系统一般只能运行于( )。
A. Windows平台 B. UNIX平台 C. LINX平台 D. NetWare平台
2. 当一条SELECT语句访问一张大表里的有限几行数据时,SQL Server2000通常会( )。
A. 为数据加上页级锁 B. 为数据加上行级锁
C. 需要用户的干涉和参与 D. 使用户独占数据库
3. 当采用Windows认证方式登录数据库服务器时,SQL Server2000客户端软件会向操作系统请求一个( )。
A. 信任连接 B. 邮件集成 C. 并发控制 D. 数据转换服务
4. 以下对SQL Server2000描述不正确的是( )。
A. 支持XML B. 支持用户自定义函数
C. 支持邮件集成 D. 支持网状数据模型
5. 如果在SQL Server2000上运行一个非常大的数据库,为取得较好效果应选用安装( )。
A. 企业版 B. 标准版 C. 个人版 D. 开发版
6. 提高SQL Server2000性能的最佳方法之一是( )。
A. 增大硬盘空间 B. 增加内存
C. 减少数据量 D. 采用高分辨率显示器
7. SQL Server2000标准版不支持的操作系统是( )。
A. Windows 2000 Server B. Windows NT Server
C. Windows98 D. Windows 2000 Advanced Server
8. 如果希望完全安装SQL Server2000,则应选择( )。
A. 典型安装 B. 最小安装 C. 自定义安装 D. 仅连接
9. 要想使SQL Server2000数据库管理系统开始工作,必须首先启动( )。
A. SQL Server服务器 B. 查询分析器
C. 网络实用工具 D. 数据导入和导出程序
10. 用于配置客户端网络连接的工具是( )。
A. 企业管理器 B. 客户端网络实用工具
C. 查询分析器 D. 联机帮助文档
11. SQL Server2000的物理存储主要包括3类文件( )。
A. 主数据文件、次数据文件、事务日志文件
B. 主数据文件、次数据文件、文本文件
C. 表文件、索引文件、存储过程
D. 表文件、索引文件、图表文件
12. 当数据库损坏时,数据库管理员可通过何种方式恢复数据库( )。
A. 事务日志文件 B. 主数据文件
C. DELETE语句 D. 联机帮助文件
13. SQL Server2000系统中的所有系统级信息存储于哪个数据库( )。
A. master B. model C. tempdb D. msdb
14. 下面关于tempdb数据库描述不正确的是( )。
A. 是一个临时数据库 B. 属于全局资源
C. 没有权限限制 D. 是用户建立新数据库的模板

15. Transact-SQL对标准SQL的扩展主要表现为(    )。
A. 加入了程序控制结构和变量
B. 加入了建库和建表语句
C. 提供了分组(Group By)查询功能
D. 提供了Min、Max等统计函数
16. 语句“USE master GO SELECT * FROM sysfiles GO”包括( )个批处理。
A. 1 B. 2 C. 3 D.4
17. SQL Server2000的字符型系统数据类型主要包括( )。
A. int、money、char B. char、varchar、text
C. datetime、binary、int D. char、varchar、int
18. 如果要在SQL Server2000中存储图形图像、Word文档文件,不可采用的数据类型是( )。
A. binary B. varbinary C. image D. text
19. 下面关于Timestamp数据类型描述正确的是:( )。
A. 是一种日期型数据类型
B. 是一种日期和时间组合型数据类型
C. 可以用来替代传统的数据库加锁技术
D. 是一种双字节数据类型
20. 使用“CREATE DATABASE AAA”命令所建立数据库文件的初始大小是( )字节。
A. 1M B. 2M C. 3M D. 4M
21. 下面关于索引的描述不正确的是( )。
A. 索引是一个指向表中数据的指针
B. 索引是在元组上建立的一种数据库对象
C. 索引的建立和撤消对表中的数据毫无影响
D. 表被撤消时将同时撤消在其上建立的索引
22. 以下哪种情况应尽量创建索引( )。
A. 在where子句中出现频率较高的列
B. 具有很多NULL值的列
C. 记录较少的基本表
D. 需要更新频繁的基本表
23. 下面关于聚集索引和非聚集索引说法正确的是( )。
A. 每个表只能建立一个非聚集索引
B. 非聚集索引需要较多的硬盘空间和内存
C. 一张表上不能同时建立聚集和非聚集索引
D. 一个复合索引只能是聚集索引
24. “Create Unique Index AAA On 学生表(学号)”将在学生表上创建名为AAA的( )。
A. 惟一索引 B. 聚集索引 C. 复合索引 D. 唯一聚集索引
  1. A 2. B 3. A 4. D 5. A 6. B 7. C 8. C
    9. A 10. B 11. A 12. A 13. A 14. D 15. A 16. B
    17. B 18. D 19. C 20. A 21. B 22. A 23. B 24. A
    25. B 26. C 27. A 28. D 29. A 30. B 31. D 32. D
  1. SQL Server2000提供的单行注释语句是使用( )开始的一行内容。
    A. “/*” B. “–” C. “{” D. “/”
  2. 下列标识符可以作为局部变量使用( )。
    A. [@Myvar] B. My var C. @Myvar D. @My var
  3. Transact-SQL支持的程序结构语句中的一种为( )。
    A. Begin…End B. If…Then…ELSE
    C. Do Case D. Do While
  4. 不属于SQL Server2000系统全局变量的是( )。
    A. @@Error B. @@Connections
    C. @@Fetch_Status D. @Records
  5. 属于事务控制的语句是( )。
    A. Begin Tran、Commit、RollBack
    B. Begin、Continue、End
    C. Create Tran、Commit、RollBack
    D. Begin Tran、Continue、End
  6. SQL Server2000触发器主要针对下列语句创建( )。
    A. SELECT、INSERT、DELETE
    B. INSERT、UPDATE、DELETE
    C. SELECT、UPDATE、INSERT
    D. INSERT、UPDATE、CREATE
  7. 下列SQL Server2000语句中出现语法错误的是( )。
    A. DECLARE @Myvar INT
    B. SELECT * FROM [AAA]
    C. CREATE DATABASE AAA
    D. DELETE * FROM AAA
  8. 索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它能够加快数据的( )速度。
    A. 插入 B. 修改 C. 删除 D. 查询

二、填空题

  1. SQL Server2000采用 __________ 计算模型,通过中央服务器集中存储数据资源。
  2. SQL Server2000数据库应用的处理过程分布在 ____ 和服务器上。
  3. SQL Server2000服务器可以被多台客户机访问,数据库服务器仅返回客户端应用程序所需要的数据,这样做的好处是可以减少 ____ 。
  4. SQL Server2000提供了动态的自我管理机制,能够自动增大或缩小数据库所占用的 ______ 。
    5.在网络环境下,当多个用户同时访问数据库时,就会产生并发问题,SQL Server2000是利用 ________ 完成并发控制的。
  5. SQL Server2000与Windows 2000等操作系统完全集成,可以使用操作系统的用户和域账号作为数据库的 ____ 。
  6. SQL Server2000采用的结构化查询语言称为 ______ 。
  7. 常见的SQL Server2000的版本一般包括 、 、 、开发版和评估版等。
  8. 安装SQL Server2000时需要以本地 _______身份登录操作系统。
  9. 如果在Windows NT/2000上安装SQL Server2000,需要事先设置至少一个 ______ 。
  10. 默认情况下,SQL Server2000服务器的名字为 。
  11. SQL Server2000服务管理器程序的主要作用是启动、 __ 、 __ 服务器。
  12. 在网络多用户环境下,在停止SQL Server2000服务之前,最好先执行 操作。
  13. SQL Server2000将数据组织成用户可以看见的逻辑组件,而在磁盘上则作为 ____实现。
  14. 常用的数据库对象主要包括缺省、约束、用户、图表、用户自定义数据类型、 ________ 、 __ 、 __ 、 __ 、 __ 等。
  15. SQL Server2000主数据文件、次数据文件和事务日志文件默认的扩展名分别为 、 和 。
  16. SQL Server2000的数据库分为____________和 ____ 两种类型。
  17. 每个SQL Server2000数据库下都包括 、 、 和 四个系统数据库。
    系统数据库主要用来进行复制、作业调度和管理报警等活动。
  1. SQL Server2000客户机传递到服务器上的一组完整的数据和SQL语句称为 __ 。
  2. 一般可以使用 命令来标识Transact-SQL批处理的结束。
  3. SQL Server2000中的数据类型通常是指字段列、存储过程参数和 ____ 的数据特征。
  4. varchar数据类型可以自动去掉字段或变量尾部的 __ 以节省空间。
  5. SQL Server2000的datetime和smalldatetime数据类型主要用来存储________和________的组合数据。
  6. 在SQL Server2000中,通常使用________数据类型来表示逻辑数据。
  7. 函数LEFT(‘abcdef’,2)的结果是 。
  8. SQL Server2000规定了2种类型的标识符,即____________和____________。
  9. SQL Server2000中的整数类型包括__________、__________、__________和__________四种。
  10. SQL Server2000中的整数类型分别为bigint、int、smallint和tinyint,它们分别占用______、______、______和______个存储字节。
  11. SQL Server2000中的数据类型主要包括________、、二进制、位和双字节等类型。
  12. SQL Server2000提供的最常用的管理工具是______________和______________。
  13. 在SQL Server2000中主要是通过使用______________运行Transact-SQL语句。
  14. 如果希望修改数据库的名字,可以使用的系统存储过程是 。
  15. SQL Server2000主要通过查询分析器和____________这两种工具来完成数据库的管理工作。
  16. 数据库备份和恢复的Transact-SQL语句分别是____________________和__________________。
  17. 在一个已存在数据的表中增加不带默认值的列,一定要保证所增加的列允许________值。
  18. 对表中记录的维护工作主要有增加、________和________操作,它们均可通过企业管理器或Transact-SQL语句完成。
  19. 在Transact-SQL语句中需要把日期时间型数据常量用__________括起来。
  20. 找回被删除表的惟一方法是事先做好数据库的 工作。
  21. 可以将视图理解为存储在SQL Server2000数据库中的一条经过预编译的 语句。
   是一种常用的改善数据库性能的技术。
  1. SQL Server2000中引入索引主要是为了加速________速度,也可保证数据的惟一性。
  2. 索引可以加速selcet语句中Order By和____________选项的执行速度。
  3. 索引一经创建就完全由SQL Server2000系统 选择和维护。
  4. 索引会影响对基本表的________、________和________等操作的速度。
  5. 从是否改变基本表记录的物理位置角度可将索引分为__________和__________索引两类。
  6. 聚集索引与非聚集索引相比,查询速度更 。
  7. 注释是一些说明性的文字,而不是 语句,不参与程序的编译。
  8. SQL Server2000支持两种形式的变量,即 和 。
  9. 一个局部变量的使用范围局限于一个 内,即两个GO语句之间的那一部分。
  10. SQL Server2000中为局部变量赋值的语句是 和 。
  11. 触发器是一种特殊的 ,基于表而创建,主要用来保证数据的完整性。
  12. 使用create database命令定义一个数据库,包括定义__________文件和__________文件两个部分。
  13. 使用create database命令定义一个数据库,定义其数据文件以关键字________开始,定义日志文件以关键字________开始。
  14. 修改数据库定义的命令关键字为________________,删除整个数据库的命令关键字为________________。
  15. 在SQL Server2000中,打开一个数据库使之成为当前库,有________种方法,其中之一使用的命令关键字为_______。
  16. 索引可以由系统根据约束条件自动建立,也可以由用户通过命令或菜单方式建立,但它的________和_______将根据需要由系统自动实现,无须用户过问。
  17. 索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它将降低数据的________、________、_________速度。
  18. 基本表中的记录数越______,每条记录占用的字节数越______时,使用索引就越有利。
  19. 创建索引的命令关键字为________________,删除索引的命令关键字为________________。
  20. 在索引命令中使用关键字CLUSTERED或NOCLUSTERED分别表示将建立的是________或________索引。
  21. 在基本表的某个列上建立索引,可以使基本表中的所有记录按该列值的________或________排列。
  22. 当指定基本表中某一列或若干列为主码时,则系统将在这些列上自动建立一个________、________和________的索引。
  23. 当指定基本表中某一列或若干列为UNIQUE约束时,则系统将在这些列上自动________一个唯一值________。
  24. 若规定基本表中某一列或若干列为非空和唯一值双重约束,则这些列就是该基本表的________码,若只规定为唯一值约束,则__________空值重复出现。
  25. 在SQL Server2000中,通常不需要用户建立索引,而是通过使用________约束和________约束,由系统自动建立索引。
  26. 单行或行尾注释的开始标记为________,多行注释的开始标记为________,结束标记为________。
  27. 局部变量的开始标记为______,全局变量的开始标记为________。
  28. 每条________语句能够同时为多个变量赋值,每条________语句只能为一个变量赋值。
  29. 定义局部变量的语句关键字为__________,被定义的各变量之间必须用________字符分开。
  30. 在SQL Server2000中,每个程序块的开始标记为关键字__________,结束标记为关键字________。
  31. 在SQL Server2000中,前后相邻的语句之间可以使用________、________或________字符分开。
  32. 在SQL Server2000中,CASE结构是一个________,只能作为一个________使用在另一个语句中。
  33. 在SQL Server2000中,CASE函数具有______种格式,每种格式中可以带有________个WHEN选项,可以带有______个ELSE选项。
  34. 在条件结构的语句中,关键字IF和ELSE之间和ELSE之后,可以使用________语句,也可以使用具有____________格式的语句块。
  35. 在循环结构的语句中,当执行到关键字__________后将终止整个语句的执行,当执行到关键字__________后将结束一次循环体的执行。
  36. 声明游标语句的关键字为________________,该语句必须带有__________子句。
  37. 打开和关闭游标的语句关键字分别为________和________。
  38. 判断使用FETCH语句读取数据是否成功的全局变量为________________。
  39. 使用游标对基本表进行修改和删除操作的语句中,WHERE选项的格式为“WHERE __________ OF ____________。
  40. 每次执行使用游标的取数、修改或________操作的语句时,能够对表中的________个记录进行操作。
  41. 在SQL Server2000中,一个事务是一个__________的单位,它把必须同时执行或不执行的一组操作________在一起。
  42. 在SQL Server2000中,一个事务处理控制语句以关键字________________开始,以关键字________________或________________结束。
  43. 每个存储过程可以包含________条Transact-SQL语句,可以在过程体中的任何地方使用__________语句结束过程的执行,返回到调用语句后的位置。
  44. 建立一个存储过程的语句关键字为________________,执行一个存储过程的语句关键字为____________。
  45. 在一个存储过程定义的AS关键字前可以定义该过程的________,AS关键字之后为该过程的__________。
  46. 触发器是一种特殊的存储过程,它可以在对一个表上进行________、________和________操作中的任一种或几种操作时被自动调用执行。
  47. 创建和删除一个触发器的语句关键字为________________和________________。
  48. 在一个表中最多只能有一个关键字为_____________的约束,关键字为FOREIGN KEY的约束可以出现________次。
  49. CHECK约束被称为________约束,UNIQUE约束被称为__________约束。
  50. 使用一种约束时,可以使用关键字_____________和标识符____________的选项命名该约束,也可以省略该选项由系统自动命名,因为用户很少再使用其约束名。
  51. 当一个表带有约束后,执行对表的各种________操作时,将自动________相应的约束,只有符合约束条件的合法操作才能被真正执行。
  52. 在SQL Server2000中,数据库的安全机制分为4个等级,分别为客户端____________的安全、数据库的________安全、数据库使用安全和数据库对象的使用安全。
  53. 数据库的安全管理问题归结为对________和________的管理问题。
  54. 要访问SQL Server2000数据库服务器,用户必须提供正确的__________和__________。
  55. 对用户授予和收回数据库操作的语句关键字分别为__________和__________。
  56. 在授予用户访问权限的语句中,所给表名选项以关键字________开始,所给用户名选项以关键字________开始。
  57. 在收回用户访问权限的语句中,所给表名选项以关键字________开始,所给用户名选项以关键字________开始。
  58. 使用游标取数和释放游标的语句关键字分别为____________和____________。

三、写出下列每条语句或程序段的功能
假设存在名为AAA的数据库,包括Students(学号 char(8),姓名 varchar(8),年龄 int,专业 varchar(20),入学日期 DateTime)和Score(学号 char(8),课程名 varchar(10),成绩 numeric(5,2))两张表。

  1. SELECT *
    FROM Students
    WHERE DATEPART(year,入学日期) =DATEPART(year,GETDATE())
  2. DECLARE @MyNO CHAR(8)
    SET @MyNO=‘20030001’
    IF (SELECT 专业 FROM Students WHERE 学号=@MyNO)=‘计算机软件’
    BEGIN
    SELECT AVG(成绩) AS 平均成绩
    FROM Score
    WHERE 学号=@MyNO
    END
    ELSE
    PRINT ‘学号为’ +@MyNO+‘的学生不存在或不属于软件专业’
    GO
  3. declare @a numeric(5,2)
    set @a=(select avg(成绩) from score)
    select *
    from score
    where 成绩>=@a
  4. declare @a numeric(5,2),@b numeric(5,2)
    set @a=(select max(成绩) from score)
    set @b=(select min(成绩) from score)
    print @a-@b
  5. declare @a char(6)
    set @a=‘刘亮’
    if(exists(select * from students where 姓名=@a))
    print ‘姓名为’+@a+‘的同学存在!’
    else
    print ‘姓名为’+@a+‘的同学不存在!’
  6. declare @a char(8)
    set @a=‘计算机’
    select 计算机专业人数=count(*)
    from students
    where left(专业,3)=@a
  7. select year(入学日期) as 入学年份,count(*) as 人数
    from students
    group by year(入学日期)
  8. select month(入学日期) as 入学月份,count(*) as 人数
    from students
    group by month(入学日期)
  9. select day(入学日期) as 入学日号,count(*) as 人数
    from students
    group by day(入学日期)
  10. create procedure xxk1
    as
    begin
    select *
    from students x,score y
    where x.学号=y.学号
    end

11.create procedure xxk2
as
begin
select x.学号,x.姓名,x.专业,count(*) as 门数
from students x,score y
where x.学号=y.学号
group by x.学号,x.姓名,x.专业
end

12.create procedure xxk3
as
begin
select 学号,avg(成绩) as 平均成绩
from score
group by 学号
end

13.create procedure xxk4
(
@a char(8),@b varchar(10),@c numeric(5,2)
)
as
begin
update score
set 成绩=@c
where 学号=@a and 课程名=@b
end

14.create procedure xxk5
(
@a char(8),@b varchar(10),@c numeric(5,2)
)
as
begin
insert into score
values(@a,@b,@c)
end

15.create procedure xxk6
(
@a char(8),@b varchar(10)
)
as
begin
delete from score
where 学号=@a and 课程名=@b
end

16.eclare @a char(8),@b varchar(10),@c numeric(5,2)
declare @d int
set @d=0
declare xxx cursor
for select 学号,课程名,成绩
from score
open xxx
fetch xxx into @a,@b,@c
while @@fetch_status=0
begin
set @d=@d+1
fetch from xxx into @a,@b,@c
end
close xxx
deallocate xxx
print @d

17.declare @a char(8),@b varchar(10),@c numeric(5,2)
declare xxx cursor
for select 学号,课程名,成绩
from score
open xxx
fetch xxx into @a,@b,@c
while @@fetch_status=0
begin
print @a+replicate(’ ‘,3)
+@b+str(@c)+replicate(’ ',3)
+(case
when @c>=90 then ‘优秀’
when @c>=70 then ‘良好’
when @c>=60 then ‘及格’
else ‘不及格’
end
)
fetch from xxx into @a,@b,@c
end
close xxx
deallocate xxx

18.declare @c numeric(5,2)
declare @c1 int, @c2 int, @c3 int, @c4 int
set @c1=0; set @c2=0; set @c3=0; set @c4=0
declare xxx cursor
for select 成绩 from score
open xxx
fetch xxx into @c
while @@fetch_status=0
begin
if(@c>=90) set @c1=@c1+1;
else if(@c>=70) set @c2=@c2+1;
else if(@c>=60) set @c3=@c3+1;
else set @c4=@c4+1
fetch from xxx into @c
end
close xxx
deallocate xxx
print ‘优秀生人数:’+str(@c1,5);
print ‘良好生人数:’+str(@c2,5);
print ‘及格生人数:’+str(@c3,5);
print ‘及格生人数:’+str(@c4,5)

19.declare @a char(8),@b varchar(10)
declare @c numeric(5,2)
declare @d int
set @d=80
declare xxx cursor
for select 学号,课程名,成绩
from score
open xxx
fetch xxx into @a,@b,@c
while @@fetch_status=0
begin
if(@c>=@d) print @a+replicate(’ ',3)+@b+str(@c,5)
fetch from xxx into @a,@b,@c
end
close xxx
deallocate xxx

20.declare @a char(8),@b varchar(10),@c numeric(5,2)
declare @s char(8),@r varchar(10)
set @s=‘20030001’
set @r=‘数学’
set @c=84
declare xxx cursor
for select 学号,课程名 from score
open xxx
fetch xxx into @a,@b
while @@fetch_status=0
begin
if(@a=@s and @b=@r)
update score
set 成绩=@c
where current of xxx
fetch from xxx into @a,@b
end
close xxx
deallocate xxx

21.declare @a char(8),@b varchar(10)
declare @s char(8),@r varchar(10)
set @s=‘20030001’
set @r=‘数学’
declare xxx cursor
for select 学号,课程名 from score
open xxx
fetch xxx into @a,@b
while @@fetch_status=0
begin
if(@a=@s and @b=@r)
begin
delete from score
where current of xxx
break
end
fetch from xxx into @a,@b
end
close xxx
deallocate xxx

四、根据下面所给的AAA数据库,按照下列每种功能写出相应的Transact-SQL语句或程序段
假设使用名称为AAA的数据库,它包括Students(学号 char(8),姓名 varchar(8),年龄 int,专业 varchar(20),入学日期 DateTime)和Score(学号 char(8),课程名 varchar(10),成绩 numeric(5,2))两张表。

  1. 以“xxxx年xx月xx日”的格式显示某日期时间型数据,假设字段名为Mydate,存于Mytable表中。
  2. 将字符串’I am a student’以大写字母显示。
  3. 从名字为“My Table”的表中查询出所有记录。
  4. 将字符串’SOFTWARE’中的’SOFT’提取出来,并以小写形式显示出来。
  5. 显示出该Score表中的全部数据,并要求当成绩为空时显示数值-1。
  6. 显示出当前日期中的年份和月份数据。
  7. 显示出Students表中所有学生记录的学号列的前四个字符。
  8. 显示出一个整数25和当前日期getdate()的值分别占用的字节数。

五、按照下列每种功能写出相应的Transact-SQL语句或程序段。
假设使用名称为AAA的数据库,它包括Students(学号 char(8),姓名 varchar(8),年龄 int,专业 varchar(20),入学日期 DateTime)和Score(学号 char(8),课程名 varchar(10),成绩 numeric(5,2))两张表。

  1. 创建AAA数据库,所有参数取默认值。
  2. 创建Students表。
  1. 将AAA数据库的初始大小更改为5MB,最大空间限定为10MB。
    4. 假设Students表中已存在大量学生记录,求所有“计算机软件”专业学生的平均年龄,如果平均年龄大于19则显示“平均年龄超过19”,否则显示“平均年龄没有超过19”。
    参考解答
    一、单选题
  1. A 2. B 3. A 4. D 5. A 6. B 7. C 8. C
  2. A 10. B 11. A 12. A 13. A 14. D 15. A 16. B
  3. B 18. D 19. C 20. A 21. B 22. A 23. B 24. A
  4. B 26. C 27. A 28. D 29. A 30. B 31. D 32. D

二、填空题

  1. 客户机/服务器(或C/S) 2. 客户机(或客户端)
  2. 网络流量 4. 硬盘空间
  3. 数据封锁机制 6. 注册账号(或登录账号)
  4. Transact-SQL 8. 企业版、标准版、个人版
  5. 系统管理员 10. 域用户账号
  6. 本地计算机名 12. 暂停、停止
  7. 暂停 14. 操作系统文件
  8. 表、索引、视图、触发器、存储过程
  9. mdf、ndf、ldf 17. 系统数据库、用户数据库
  10. master、model、tempdb、msdb 19. msdb
  11. 批处理 21. GO 22. 局部变量
  12. 空格 24. 日期、时间
  13. bit 26. ’ab’
  14. 常规标识符、分隔标识符 28. bigint int smallint tinyint
  15. 8、4、2、1 30. 数值、字符、日期时间
  16. 企业管理器 查询分析器 32. 查询分析器
  17. sp_renamedb 34. 企业管理器
  18. Backup Database、Restore Database 36. Null(空)
  19. 删除、修改 38. 单引号
  20. 备份 40. SELECT
  21. 索引 42. 查询
  22. Group By 44. 自动
  23. 插入、删除、修改 46. 聚集、非聚集
  24. 快 48. 可执行
  25. 局部变量、全局(系统)变量 50. 批处理
  26. SELECT、SET 52. 存储过程
  27. 数据、日志 54. ON、LOG ON
  28. ALTER DATABASE、 DROP DATABASE 56. 2、USE
  29. 打开、重建 58. 插入、修改、删除
  30. 多、多 60. CREATE INDEX、DROP INDEX
  31. 聚集、非聚集 62. 升序、降序
  32. 非空、唯一、聚集 64. 建立(创建)、 索引
  33. 备用(侯选码)、不允许 66. 主码、唯一值
  34. –、// 68. @、@@
  35. SELECT、SET SELECT、SET 70. DECLARE、逗号
  36. BEGIN、END 72. 空格、分号、换行
  37. 函数、表达式 74. 2、多、一
  38. 单条、BEGIN…END 76. BREAK、CONTINUE
  39. DECLARE CURSOR、查询(或SELECT) 78. OPEN、CLOSE
  40. @@FETCH_STATUS 80. CURRENT、<游标名>
  41. 删除、单(一) 82. 并发控制、捆绑
  42. BEGIN TRAN、COMMIT [TRAN]、ROLLBACK [TRAN]
  43. 多、RETURN(返回) 85. CREATE PROC、EXEC
  44. 参数、过程体 87. 插入(insert)、删除(delete)、更新(update,或修改)
  45. CREATE TRIGGER、DROP TIRGGER 89. PRIMARY KEY、多
  46. 检查、唯一值 91. CONSTRAINT、<约束名>
  47. 更新、检查 93. 操作系统、登录
  48. 琐、钥匙 95. 登录帐号、口令(密码)
  49. GRANT、REVOKE 97. ON、TO
  50. ON、FROM 99. FETCH、DEALLOCATE

三、写出下列每条语句或程序段的功能

  1. 从Students表中查询出所有当年(系统时间)入学的学生记录。
  2. 首先定义一个名为@MyNo的局部变量,并给它赋初值,如果@MyNo属于计算机软件专业,则显示出平均成绩,否则显示“学号为@MyNo的学生不存在或不属于软件专业”。
  3. 从score表中查询出大于等于平均成绩的所有记录。
  4. 求出score表中最高成绩与最低成绩的分数之差。
  5. 从students表中查询姓名为@a的值的同学是否存在,根据不同情况显示出相应信息。
  6. 从students表中统计出专业名开头为@a的值(即“计算机”)的所有学生人数。
  7. 从students表中分组统计出每个年份入学的学生人数。
  8. 从students表中分组统计出每个月份入学的学生人数。
  9. 从students表中分组统计出每个日号入学的学生人数。
  10. 显示出AAA库中所有学生的记录信息及选课成绩
  11. 显示出AAA库中每个学生的学号、姓名、专业等信息及选课门数
  12. 显示出AAA库中每个学生的平均成绩
  13. 修改score表中学号为@a的值、课程名为@b的值的学生的成绩为@c的值。
  14. 向score表中插入学号为@a的值、课程名为@b的值、成绩为@c的值的学生成绩记录。
  15. 从score表中删除学号为@a的值、课程名为@b的值的学生成绩记录。
  16. 从score表中统计并显示出记录总数
  17. 显示出score表中每个成绩记录,并在每条记录最后给出优秀、良好、及格、不及格等相应等级。
  18. 从score表中按成绩统计并显示出优秀、良好、及格、不及格各多少人。
  19. 显示出score表中成绩大于等于@d值的所有记录。
  20. 修改score表中学号为@a的值、课程名为@b的值的学生的成绩为@c的值。
  21. 从score表中删除学号为@a的值、课程名为@b的值的学生记录。

四、根据下面所给的AAA数据库,按照下列每种功能写出相应的Transact-SQL语句或程序段
1.
SELECT DATEPART(year,Mydate) + ’年’
+ DATEPART(month,Mydate) + ’月’
+ DATEPART(day,MyDate) + ’日’
FROM Mytable
2. SELECT UPPER(‘I am a student’)
3. SELECT * FROM [My Table]
4. SELECT LOWER(LEFT(’SOFTWARE’,4))
5. select 学号,课程名,isnull(成绩,-1)
from Score
6. select year(getdate()),month(getdate())
7. select left(学号,4)
fron Students
8. select datalength(25),datalength(getdate())

五、按照下列每种功能写出相应的Transact-SQL语句或程序段。

  1. Create DataBase AAA
  2. create table students (
    学号 char(8) primay key,
    姓名 varchar(8),
    年龄 int,
    专业 varchar(20),
    入学日期 datetime
    )
  3. ALTER DATABASE AAA
    MODIFY FILE (
    NAME = AAA_data,
    SIZE = 5,
    MAXSIZE=10
    )
  4. IF (Select Avg(年龄) From Students Where 专业=’计算机软件’)>19
    SELECT ‘平均年龄超过19’
    ELSE
    SELECT ‘平均年龄没有超过19’