《SQLServer实用教程》习题答案.docx
《《SQLServer实用教程》习题答案.docx》由会员分享,可在线阅读,更多相关《《SQLServer实用教程》习题答案.docx(21页珍藏版)》请在冰豆网上搜索。
《SQLServer实用教程》习题答案
第一章
一、填空题
1.5,企业版(EnterpriseEdition)、开发人员版(DeveloperEdition)、标准版(StandardEdition)、工作组版(WorkgroupEdition)、简易版(ExpressEdition)。
2.数据库引擎服务(SQLServer)、代理服务(SQLServerAgent)、分析服务(SQLServerAnalysisServices)、浏览器服务(SQLServerBrowser)、集成服务(SQLServerIntegrationServices)、全文索引服务(SQLServerFullTextSearch))、报表服务(SQLServerReportServer)。
3.开发人员版、标准版、工作组版、简易版。
二、判断题
1.×2.√
三、简答题
1.可以在哪些操作系统平台下安装使用SQLServer2005企业版?
Windows2000ServerSP4
Windows2000AdvancedServerSP4
Windows2000DatacenterEditionSP4
WindowsServer2003SP1
WindowsServer2003EnterpriseEditionSP1
WindowsServer2003DatacenterEditionSP1
WindowsSmallBusinessServer2003StandardEditionSP1
WindowsSmallBusinessServer2003PremiumEditionSP1
……等
2.简述如何启动、停止数据库引擎服务。
P11
第二章
一、填空题
1.42.8
二、选择题
1.C2.A
三、综合题
1.创建一个数据类型New_str,要求其为字符型,最大长度为12,不允许为空,写出实现的语句。
USEmaster;
EXECsp_addtypeNew_str,'varchar(12)','NOTNULL';
第三章
一、判断题
1.√2.×3.×4.×5.×6.√7.√8.√9.√10.√
二、选择题
1.A2.C3.C4.B5.A6.A7.A8.B9.D10.A
三、填空题
1.主数据文件和从数据文件,.MDF、.NDF。
2.CreateDatabase。
3.SP_HelpDB。
4.ALTERDATABASE数据库名MODIFYFILE。
5.ALTERDATABASE数据库名MODIFYFILE、DBCCshrinkdatabase。
6.SP_DBOPTION。
7.DROPDATABSE。
8.SP_DETACH_DB'数据库名'[,[@skipchecks=]'skipchecks']。
9.SP_ATTACH_DB'数据库名',’主数据文件的路径’。
10.CREATETABLE。
11.ALTERTABLE。
12.DROPTABLE。
13.INSERT。
14.UPDATE。
15.DELETE。
四、问答题
1.什么是约束?
其作用是什么?
约束定义了关于允许什么数据进入数据库的规则。
使用约束的目的是为了防止列出现非法数据,以保证数据库中数据的一致性和完整性。
2.什么是数据完整性?
完整性有哪些类型?
为了维护数据库中的数据和现实世界的一致性,SQLServer提供了确保数据库中数据的完整性技术。
数据完整性是指存储在数据库中的数据的一致性和准确性。
数据完整性有3种类型:
域完整性、实体完整性和参照完整性。
关系数据库的数据与更新操作必须满足这3种完整性规则。
3.已知数据库Sales中有两张表E1和E2,其数据结构和相应内容如表3.8和表3.9所示。
(1)写出删除表E2中那些已在表E1中存在的记录的命令序列。
DeleteE2Where编号=’007’
DeleteE2Where编号=’009’
(2)写出将表E2的记录插入到表E1中的命令序列。
InsertintoE1values(002,方秀丽,女)
InsertintoE1values(004,江静,女)
InsertintoE1values(006,苏立,男)
或
InsertintoE1select*fromE2
4.已知数据库Sales中有两张表G1和G2,其数据结构和相应内容如表3.10、表3.11所示。
第四章
一、填空题
1.去除重复记录
2.升序,降序。
3.字段,行。
4.返回汇总行。
5.附加行
二、单项选择题
1.B
2.C
3.B
4.C
5.A
三、针对本章使用的sales数据库,利用SELECT语句查询下列问题。
1.查询进货表中前6件商品的信息。
Selecttop6*fromgoods
2.查询商品的进货价格,并按进货价从大到小排序。
Select商品名称,进货价
fromgoods
orderby进货价desc
3.查询销售商品的名称、进货价、零售价和售出时间。
Select商品名称,进货价,零售价,售出时间
fromgoodsjoinsellongoods.商品编号=sell.商品编号
4.查询商品的平均零售价格。
Select商品名称,avg(零售价)
Fromgoods
Groupby商品名称
5.查询销售时间在2004年1月1日至2005年1月1日之间的商品名称、进货数量、销售时间。
Select商品名称,goods.数量,售出时间
fromgoodsjoinsellongoods.商品编号=sell.商品编号
where售出时间>=’2004-1-1’and售出时间<=’2005-1-1’
6.使用COMPUTEBY分别查询每一个销售人员的销售总数量。
Select*fromsell
orderby售货员工编号
COMPUTEsum(数量)BY售货员工编号
7.使用LIKE查询显示器类商品的名称、进货数量和销售数量。
Select商品名称,goods.数量as进货数量,sell.数量as销售数量
fromgoodsjoinsellongoods.商品编号=sell.商品编号
where商品名称like‘%显示器%’
8.查询打印机的销售数量。
Select商品名称,sum(sell.数量)as销售数量
fromgoodsjoinsellongoods.商品编号=sell.商品编号
where商品名称=‘打印机’
groupby商品名称
第五章
一、填空题
1.索引。
2.非唯一索引。
3.聚集索引。
4.唯一聚集索引。
5.更新表的索引统计信息。
二、单项选择题
1.B
2.C
3.C
4.D
5.E
三.简答题
1.什么叫索引,索引有哪些优点?
索引是一个单独的、物理的数据库结构。
它由某个表中的一列或者若干列的值,以及这些值记录在表中存储位置的物理地址所组成。
使用索引可以极大的改善数据库的性能,其表现在如下方面。
●通过创建唯一性索引,可以保证每一行数据的唯一性。
●可以大大的加快数据的检索速度,这正是使用索引的最主要的原因。
●在使用ORDERBY和GROUPBY子句进行数据检索时,可以减少查询中分组和排序的时间。
●加速表与表之间的连接,特别是在实现数据库的参照完整性上很有意义。
●可以在检索数据的过程中提高系统性能。
2.设置索引的原则是什么?
●在主键上创建索引。
●在经常需要检索的字段上创建索引。
●在外键上创建索引。
●在经常需要排序的列上创建索引。
3.聚集索引和非聚集索引有什么区别,哪个的检索效率更高?
P87
第六章
一、填空题
1.查询
2.ALTERVIEW
3.WITHENCRYPTION。
4.使用视图修改基表中的数据时,必须保证修改后的数据满足定义视图的限制条件。
5.1
二、单项选择题
1.C
2.B
3.C
4.D
5.A
三、简答题
1.视图和表有什么区别?
2.视图有哪些优点?
(1)视点集中。
使用户只关心感兴趣的某些特定数据和他们所负责的特定任务,那些不需要或无用的数据则不必在视图中显示。
(2)简化操作。
视图大大简化了用户对数据的操作。
因为在定义视图时,若视图本身就是一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新编写这些复杂的查询语句,只要一条简单的查询视图语句即可。
(3)定制数据。
视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。
因此,当有许多不同水平的用户共用同一数据库时,这就显得极为重要。
(4)合并分割数据。
可以重新保持表原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。
(5)安全性。
视图可以作为一种安全机制。
通过视图用户只能查看和修改他们所能看到的数据,其他数据库或表既不可见也不可以访问。
如果某一用户想要访问视图的结果集,其必须被授予访问权限。
视图所引用表的访问权限与视图权限的设置互不影响。
3.通过视图插入、更新和删除数据操作的注意事项是什么?
(1)修改视图中的数据时,可以对基于两个以上基表或视图的视图进行修改,但是不能同时影响两个或者多个基表,每次修改都只能影响一个基表。
(2)不能修改那些通过计算得到的列,例如年龄和平均分等。
(3)若在创建视图时定义了WITHCHECKOPTION选项,那么使用视图修改基表中的数据时,必须保证修改后的数据满足定义视图的限制条件。
(4)执行UPDATE或DELETE命令时,所更新或删除的数据必须包含在视图的结果集中。
(5)当视图引用多个表时,无法用DELETE命令删除数据,若使用INSERT或UPDATE语句对视图进行操作时,被插入或更新的列必须属于同一个表。
第七章
一、填空题
1.系统,用户
2.符号和运算符
3.算术运算符、比较运算符、逻辑运算符、赋值运算符
4.set或select。
5.声明、读取、关闭
二、选择题
1.B
2.BC
3.A
4.D
5.C
三、综合题
1.什么叫批处理?
批处理的结束标志是什么?
建立批处理要注意什么事项?
批处理就是单个或多个T-SQL语句的集合,由应用程序一次性发送给SQLServer解释并执行批处理内的所有语句指令。
使用GO命令和使用EXECUTE命令可以将批处理发送给SQLServer。
(1)CREATEDEFAULT、CREATERULE、CREATEVIEW、CREATEPROCEDURE、和CREATETRIGGER语句,只能在单独的批处理中执行。
(2)将默认值和规则绑定到表字段或用户自定义数据类型上之后,不能立即在同一个批处理中使用它们。
(3)定义一个CHECK约束之后,不能立即在同一个批处理中使用这个约束。
(4)修改表中的字段名之后,不能立即在同一个批处理中使用这个新字段名。
(5)用户定义的局部变量的作用范围局限于一个批处理内,并且在GO命令后不能再引用这个变量。
(6)如果一个批处理中的第一条语句是执行某存储过程的EXEC语句,则EXEC关键字可以省略不写;如果不是批处理的第一条语句,则必须要有EXEC关键字。
2.简述局部变量的声明和赋值方法。
(1)局部变量的声明。
在使用局部变量以前,必须使用DECLARE语句来声明这个局部变量。
DECLARE语句的语法格式如下:
DECLARE@局部变量名数据类型[,…n]
(2)局部变量的赋值。
给局部变量赋值有两种方法,可以使用SET语句赋值,也可以使用SELECT语句赋值。
使用SET语句赋值的语法格式为:
SET{@局部变量名=表达式}[,…n]
使用SELECT语句赋值的语法格式为:
SELECT@局部变量名=表达式[,…n]
3.写出Transact-SQL语句,将SQLServer2005服务器的名称放在局部变量@srv中,并将该局部变量的值输出显示在屏幕上。
想一想,可以用几种方法实现该局部变量的赋值和显示?
Declare@srvchar(20)
Set@srv=@@servername
Select@srv
4.下面的语句错在什么地方?
应该如何修改才能显示@的值为2?
DECLARE@aint
SELECT@a=1
GO
SET@a=@a+1
SELECT@a
DECLARE@aint
SELECT@a=1
--GO
SET@a=@a+1
SELECT@a
5.在Sales数据库中查询各商品的进货数量及剩余数量。
Select商品名称,goods.数量-isnull(sum(sell.数量),0)剩余数量
fromgoodsleftjoinsellongoods.商品编号=sell.商品编号
GROUPBY商品名称,goods.数量
第八章
一、填空题
1.存储过程
2.存储过程。
字符串变量
3.T-SQL和CLR
4.WITHENCRYPTION
5.master、sp_。
二、选择题
1.A
2.B
3.D
4.C
5.B
三、综合题
1.存储过程与存储在客户计算机的本地T-SQL语句相比,它具有什么优点?
(1)执行速度快,改善系统性能。
(2)减少网络流量。
(3)增强代码的重用性和共享性。
(4)提供了安全机制。
2.SQLServer支持哪几类存储过程?
在SQLServer2005中,存储过程有3种类型。
(1).用户自定义存储过程
用户自定义存储过程包括Transact-SQL和CLR两种。
(2).系统存储过程
(3).扩展存储过程
3.希望人力资源部门的用户可以在Sales数据库中插入、更新和删除数据,但不希望他们有访问基表的权限。
那么除了创建一个视图以外,还能如何实现该目标?
可以创建能实现相应功能的存储过程
4.在Sales数据库中建立一个名为proc_find的存储过程,如果查询到指定的商品,则用RETURN语句返回1,否则返回0。
--创建存储过程
createprocproc_find
@spmcchar(20)
as
ifexists(select*fromgoods
where商品名称=@spmc)
return1
else
return0
--执行存储过程
declare@iint
exec@i=proc_find'打印机'
select@ias返回值
5.在Sales数据库中建立一个名为date_to_date_sales的存储过程,该存储过程将返回在两个指定日期之间的所有销售记录。
createprocdate_to_date_sales
@d1datetime,@d2datetime
as
select*fromsell
where售出时间between@d1and@d2
execdate_to_date_sales'2004-1-1','2005-1-1'
第九章
一、填空题
1.Inserted、DELETE和UPDATTE
2.After和insteadof
3.Create、Alter、Drop
4.表或触发器、表
5.DML
二、选择题
1.D
2.A
3.B
4.C
5.B
6.D
三、综合题
1.什么是触发器,触发器有什么功能?
触发器是一种特殊的存储过程,在语言事件发生时,所设置的触发器就会自动被执行,以进行维护数据完整性或其他一些特殊的任务。
触发器功能:
1).DML触发器
DML触发器有助于在表或视图中修改数据时强制业务规则,扩展数据完整性,它具有以下功能。
(1)级联修改数据库中相关的表。
(2)实现比CHECK约束更为复杂的约束操作。
(3)拒绝或回滚违反引用完整性的约束操作。
(4)比较表修改前后数据之间的差别,并根据差别采取相应的操作。
2).DDL触发器
DDL触发器用于执行管理任务,并强制影响数据库的业务规则。
它具有以下功能。
(1)防止对数据库架构进行某些更改。
(2)使得数据库中发生某种情况以响应数据库架构中的更改。
(3)记录数据库架构中的更改或事件。
2.在Sales数据库中,创建触发器tri_ReportGoods,当商品库存低于5件时发出库存量少请求进货的提示信息。
createtriggertri_ReportGoods
onsell
forinsert
as
declare@sbhchar(6),@smcchar(20),@syslint
select@sbh=inserted.商品编号,@smc=商品名称
frominsertedjoingoodsoninserted.商品编号=goods.商品编号
Select@sysl=goods.数量-isnull(sum(sell.数量),0)
fromgoodsleftjoinsellongoods.商品编号=sell.商品编号
wheregoods.商品编号=@sbh
GROUPBYgoods.商品编号,goods.数量
if@sysl<5
print@smc+'的库存少于5件,请及时进货'
--测试触发器
insertintosell
values('2',2,'2009-12-1','1301')
3.在Sales数据库中,创建触发器tri_GoodsCount,当商品销售之后,相应的库存要有所变化。
createtriggertri_GoodsCount
onsell
forinsert
as
declare@sbhchar(6),@slint
select@sbh=inserted.商品编号,@sl=inserted.数量
frominsertedjoinselloninserted.商品编号=sell.商品编号
updategoods
set数量=数量-@sl
wheregoods.商品编号=@sbh
--测试触发器
insertintosell
values('2',2,'2009-12-2','1301')
select*fromgoods
4.更改tri_ReportGoods触发器,当商品库存低于10件时才发出库存量少请求进货的提示信息,并对触发器定义文本进行加密。
altertriggertri_ReportGoods
onsell
WITHENCRYPTION
forinsert
as
declare@sbhchar(6),@smcchar(20),@syslint
select@sbh=inserted.商品编号,@smc=商品名称
frominsertedjoingoodsoninserted.商品编号=goods.商品编号
Select@sysl=goods.数量-isnull(sum(sell.数量),0)
fromgoodsleftjoinsellongoods.商品编号=sell.商品编号
wheregoods.商品编号=@sbh
GROUPBYgoods.商品编号,goods.数量
if@sysl<10
print@smc+'的库存少于10件,请及时进货'
5.在Sales数据库中,创建一个DDL触发器,以防止表的删除。
createtriggertri_ddl
ondatabase
fordrop_table
as
print'不能删除该数据库中的表。
'
rollback
--测试触发器
droptabledbo.aa
6.创建一个DDL触发器,保护当前服务器中的所有数据库不能被修改。
createtriggertri_alter_database
onallserver
foralter_database
as
print'不能修改该数据库。
'
rollback
第十章
一、判断题(在命题的后面用“√”或“”符号表示“正确”或“错误”)
1.√
2.√
3.×
4.√
5.√
二、选择题
1.D
2.A
3.A
4.A
5.D
三、填空题
1.标量函数内嵌表值函数多语句表值函数。
2.原子性、一致性、隔离性、持久性。
3.共享锁、更新锁、独占锁。
4.多个用户的并发操作,防止用户读取正在由其他用户更改的数据或者多个用户同时修改同一数据,确保事务的完整性和数据的一致性。
。
5.锁的粒度和类型
四、问答题
1.在Sales数据库中,编写函数显示表Sell指定日期的销售记录。
createfunction
(@datedatetime)
returnstable
as
return(
select*fromsell
where售出时间=@date)
select*fromfn_sell('2004-10-15')
2.在Sales数据库中,编写函数对表Sell进行统计并生成指定月份销售统计表,该表包含有两列:
日期DateTime,日销售额Money。
createfunctionfn_monthsell
(@mint)
returns@mstable
(月份int,
月销售额money)
as
begin
insert@ms
select月份=month(售出时间),月销售额=sum(sell.数量*零售价)--
fromselljoingoodsonsell.商品编号=goods.商品编号
wheremonth(售出时间)=@m
groupbymonth(售出时间)
return
end
select*fromfn_monthsell(10)
3.
begintransaction
updatet1
sett1.数量=t1.数量+gg.数量
fromt1joingg
ont1.编号=gg.编号
insertintot1
Select*fromgg
where编号notin(select编号fromt1)
committransaction
第十一章
一、填空题
1.操作系统级、SQLserver级、数据库级。
2.Windows身份认证模式和混合模式。
3.创建新的数据库角色、分配权限给创建的角色、将这个角色授予某个用户。
4.完整恢复模式、大容量日志恢复模式、简单恢复模式。
5.完整备份、部分