SQLServer数据库复习题.docx
《SQLServer数据库复习题.docx》由会员分享,可在线阅读,更多相关《SQLServer数据库复习题.docx(15页珍藏版)》请在冰豆网上搜索。
SQLServer数据库复习题
SQL-Server数据库复习题
D
A.主数据文件、次数据文件、事务日志文件
B.主数据文件、次数据文件、文本文件
C.表文件、索引文件、存储过程
D.表文件、索引文件、图表文件
10.当数据库损坏时,数据库管理员可通过何种方式恢复数据库()。
A.事务日志文件B.主数据文件
C.DELETE语句D.联机帮助文件
11.SQLServer2005系统中的所有系统级信息存储于哪个数据库()。
A.masterB.modelC.tempdbD.msdb
12.下面关于tempdb数据库描述不正确的是()。
A.是一个临时数据库B.属于全局资源
C.没有权限限制D.是用户建立新数据库的模板
13.Transact-SQL对标准SQL的扩展主要表现为()。
A.加入了程序控制结构和变量
B.加入了建库和建表语句
C.提供了分组(GroupBy)查询功能
D.提供了Min、Max等统计函数
14.语句“USEmasterGOSELECT*FROMsysfilesGO”包括()个批处理。
A.1B.2C.3D.4
15.SQLServer2005的字符型系统数据类型主要包括()。
A.int、money、charB.char、varchar、text
C.datetime、binary、intD.char、varchar、int
16.如果要在SQLServer2005中存储图形图像、Word文档文件,不可采用的数据类型是()。
A.binaryB.varbinaryC.imageD.text
17.下面关于Timestamp数据类型描述正确的是:
()。
A.是一种日期型数据类型
B.是一种日期和时间组合型数据类型
C.可以用来替代传统的数据库加锁技术
D.是一种双字节数据类型
18.使用“CREATEDATABASEAAA”命令所建立数据库文件的初始大小是()字节。
A.1MB.2MC.3MD.4M
19.下面关于索引的描述不正确的是()。
A.索引是一个指向表中数据的指针
B.索引是在元组上建立的一种数据库对象
C.索引的建立和撤消对表中的数据毫无影响
D.表被撤消时将同时撤消在其上建立的索引
20.以下哪种情况应尽量创建索引()。
A.在where子句中出现频率较高的列
B.具有很多NULL值的列
C.记录较少的基本表
D.需要更新频繁的基本表
21.下面关于聚集索引和非聚集索引说法正确的是()。
A.每个表只能建立一个非聚集索引
B.非聚集索引需要较多的硬盘空间和内存
C.一张表上不能同时建立聚集和非聚集索引
D.一个复合索引只能是聚集索引
22.“CreateUniqueIndexAAAOn学生表(学号)”将在学生表上创建名为AAA的()。
A.惟一索引B.聚集索引C.复合索引D.唯一聚集索引
23.SQLServer2005提供的单行注释语句是使用()开始的一行内容。
A.“/*”B.“--”C.“{”D.“/”
24.下列标识符可以作为局部变量使用()。
A.[@Myvar]B.MyvarC.@MyvarD.@Myvar
25.Transact-SQL支持的程序结构语句中的一种为()。
A.Begin…EndB.If…Then…ELSE
C.DoCaseD.DoWhile
26.不属于SQLServer2005系统全局变量的是()。
A.@@ErrorB.@@Connections
C.@@Fetch_StatusD.@Records
27.属于事务控制的语句是()。
A.BeginTran、Commit、RollBack
B.Begin、Continue、End
C.CreateTran、Commit、RollBack
D.BeginTran、Continue、End
28.SQLServer2005触发器主要针对下列语句创建()。
A.SELECT、INSERT、DELETE
B.INSERT、UPDATE、DELETE
C.SELECT、UPDATE、INSERT
D.INSERT、UPDATE、CREATE
29.下列SQLServer2005语句中出现语法错误的是()。
A.DECLARE@MyvarINT
B.SELECT*FROM[AAA]
C.CREATEDATABASEAAA
D.DELETE*FROMAAA
30.索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它能够加快数据的()速度。
A.插入B.修改C.删除D.查询
二、填空题
1.SQLServer2005采用__________计算模型,通过中央服务器集中存储数据资源。
2.SQLServer2005数据库应用的处理过程分布在____和服务器上。
3.SQLServer2005服务器可以被多台客户机访问,数据库服务器仅返回客户端应用程序所需要的数据,这样做的好处是可以减少____。
4.SQLServer2005提供了动态的自我管理机制,能够自动增大或缩小数据库所占用的______。
5.在网络环境下,当多个用户同时访问数据库时,就会产生并发问题,SQLServer2005是利用________完成并发控制的。
6.一般可以使用命令来标识Transact-SQL批处理的结束。
7.SQLServer2005中的数据类型通常是指字段列、存储过程参数和____的数据特征。
8.varchar数据类型可以自动去掉字段或变量尾部的__以节省空间。
9.SQLServer2005的datetime和smalldatetime数据类型主要用来存储________和________的组合数据。
10.在SQLServer2005中,通常使用________数据类型来表示逻辑数据。
11.是一种常用的改善数据库性能的技术。
12.SQLServer2005中引入索引主要是为了加速________速度,也可保证数据的惟一性。
13.索引可以加速selcet语句中OrderBy和____________选项的执行速度。
14.索引一经创建就完全由SQLServer2005系统选择和维护。
15.索引会影响对基本表的________、________和________等操作的速度。
16.在索引命令中使用关键字CLUSTERED或NOCLUSTERED分别表示将建立的是________或________索引。
17.在基本表的某个列上建立索引,可以使基本表中的所有记录按该列值的________或________排列。
18.当指定基本表中某一列或若干列为主码时,则系统将在这些列上自动建立一个________、________和________的索引。
19.当指定基本表中某一列或若干列为UNIQUE约束时,则系统将在这些列上自动________一个唯一值________。
20.若规定基本表中某一列或若干列为非空和唯一值双重约束,则这些列就是该基本表的________码,若只规定为唯一值约束,则__________空值重复出现。
三、写出下列每条语句或程序段的功能
假设存在名为AAA的数据库,包括Students(学号char(8),姓名varchar(8),年龄int,专业varchar(20),入学日期DateTime)和Score(学号char(8),课程名varchar(10),成绩numeric(5,2))两张表。
1.SELECT*
FROMStudents
WHEREDATEPART(year,入学日期)=DATEPART(year,GETDATE())
2.DECLARE@MyNOCHAR(8)
SET@MyNO='20030001'
IF(SELECT专业FROMStudentsWHERE学号=@MyNO)='计算机软件'
BEGIN
SELECTAVG(成绩)AS平均成绩
FROMScore
WHERE学号=@MyNO
END
ELSE
PRINT'学号为'+@MyNO+'的学生不存在或不属于软件专业'
GO
3.declare@anumeric(5,2)
set@a=(selectavg(成绩)fromscore)
select*
fromscore
where成绩>=@a
4.declare@anumeric(5,2),@bnumeric(5,2)
set@a=(selectmax(成绩)fromscore)
set@b=(selectmin(成绩)fromscore)
print@a-@b
5.declare@achar(6)
set@a='刘亮'
if(exists(select*fromstudentswhere姓名=@a))
print'姓名为'+@a+'的同学存在!
'
else
print'姓名为'+@a+'的同学不存在!
'
6.declare@achar(8)
set@a='计算机'
select计算机专业人数=count(*)
fromstudents
whereleft(专业,3)=@a
7.selectyear(入学日期)as入学年份,count(*)as人数
fromstudents
groupbyyear(入学日期)
8.selectmonth(入学日期)as入学月份,count(*)as人数
fromstudents
groupbymonth(入学日期)
9.selectday(入学日期)as入学日号,count(*)as人数
fromstudents
groupbyday(入学日期)
10.createprocedurexxk1
as
begin
select*
fromstudentsx,scorey
wherex.学号=y.学号
end
11.createprocedurexxk2
as
begin
selectx.学号,x.姓名,x.专业,count(*)as门数
fromstudentsx,scorey
wherex.学号=y.学号
groupbyx.学号,x.姓名,x.专业
end
12.createprocedurexxk3
as
begin
select学号,avg(成绩)as平均成绩
fromscore
groupby学号
end
13.createprocedurexxk4
(
@achar(8),@bvarchar(10),@cnumeric(5,2)
)
as
begin
updatescore
set成绩=@c
where学号=@aand课程名=@b
end
14.createprocedurexxk5
(
@achar(8),@bvarchar(10),@cnumeric(5,2)
)
as
begin
insertintoscore
values(@a,@b,@c)
end
15.createprocedurexxk6
(
@achar(8),@bvarchar(10)
)
as
begin
deletefromscore
where学号=@aand课程名=@b
end
16.eclare@achar(8),@bvarchar(10),@cnumeric(5,2)
declare@dint
set@d=0
declarexxxcursor
forselect学号,课程名,成绩
fromscore
openxxx
fetchxxxinto@a,@b,@c
while@@fetch_status=0
begin
set@d=@d+1
fetchfromxxxinto@a,@b,@c
end
closexxx
deallocatexxx
print@d
17.declare@achar(8),@bvarchar(10),@cnumeric(5,2)
declarexxxcursor
forselect学号,课程名,成绩
fromscore
openxxx
fetchxxxinto@a,@b,@c
while@@fetch_status=0
begin
print@a+replicate('',3)
+@b+str(@c)+replicate('',3)
+(case
when@c>=90then'优秀'
when@c>=70then'良好'
when@c>=60then'及格'
else'不及格'
end
)
fetchfromxxxinto@a,@b,@c
end
closexxx
deallocatexxx
18.declare@cnumeric(5,2)
declare@c1int,@c2int,@c3int,@c4int
set@c1=0;set@c2=0;set@c3=0;set@c4=0
declarexxxcursor
forselect成绩fromscore
openxxx
fetchxxxinto@c
while@@fetch_status=0
begin
if(@c>=90)set@c1=@c1+1;
elseif(@c>=70)set@c2=@c2+1;
elseif(@c>=60)set@c3=@c3+1;
elseset@c4=@c4+1
fetchfromxxxinto@c
end
closexxx
deallocatexxx
print'优秀生人数:
'+str(@c1,5);
print'良好生人数:
'+str(@c2,5);
print'及格生人数:
'+str(@c3,5);
print'及格生人数:
'+str(@c4,5)
19.declare@achar(8),@bvarchar(10)
declare@cnumeric(5,2)
declare@dint
set@d=80
declarexxxcursor
forselect学号,课程名,成绩
fromscore
openxxx
fetchxxxinto@a,@b,@c
while@@fetch_status=0
begin
if(@c>=@d)print@a+replicate('',3)+@b+str(@c,5)
fetchfromxxxinto@a,@b,@c
end
closexxx
deallocatexxx
20.declare@achar(8),@bvarchar(10),@cnumeric(5,2)
declare@schar(8),@rvarchar(10)
set@s='20030001'
set@r='数学'
set@c=84
declarexxxcursor
forselect学号,课程名fromscore
openxxx
fetchxxxinto@a,@b
while@@fetch_status=0
begin
if(@a=@sand@b=@r)
updatescore
set成绩=@c
wherecurrentofxxx
fetchfromxxxinto@a,@b
end
closexxx
deallocatexxx