• 125.00 KB
  • 2022-04-22 11:20:08 发布

SQL Server 2008主教材第1~13章主教材习题答案.doc

  • 15页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《数据库技术与应用-SQLServer2008》习题参考答案第1章一.选择题1.A2.B3.D4.A5.B二.填空题1.载体/符号意义2.数据集合3.DBMS4.DBS5.层次模型,网状模型,关系模型,三.问答题1.答:数据库的域包含的是需要面对的对象,至于文件管理系统,调用时比较麻烦,不如数据库方便,加上文件管理系统管理不不紧紧是你所需要面对的对象,所以不具有可比性,如果非要比一下,数据库比文件管理系统更简单,更方便更快捷。2.答:数据库是指数据库系统中按照一定的方式组织的,存储在外部存储设备上的能为多个用户共享的、与应用程序和互相独立的相关数据集合。数据库管理系统(databasemanagementsystem)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。数据库系统是基于数据库的计算机应用系统。也是由计算机系统数据库及其描述机构,数据管理系统和有关人员组成的具有高度组织性的总体.3.答:一对一联系1:1,一对多联系1:m,多对多联系m:n。例子:1:1一个厂只有一个厂长,一个厂长只在一个厂任职。1:m一个公司只有多个职员,一个职员只能在一个公司就职。m:n一个读者可以读多种图书,任何一种图书可以为多个读者借阅。4.答:数据模型是对现实世界中数据的抽象,它表现为一些关系数据组织的集合。种类:概念模型,逻辑模型,物理模型。特点,概念模型:按用户观点对数据和信息进行建模,描述现实的概念化结构;逻辑模型按计算机观点对数据进行建模服务于DBMS的应用实现;物理模型数据库在物理存储介质上的组织结构。5.答:当前的新型数据库有:分布式数据库,它的特点是:数据是分布的,数据是逻辑相关的,结点的自治性,主要用于由分布式系统中;多媒体数据库,它的特点是:能方便的描述和处理具有内部层次结构的数据,提供由用户定义的新的数据类型和相应操作的功能,能够提供更灵活的定义和修改模式的能力,主要用于办公自动化,人工智能,计算机辅助制造中;工程的数据库,它的特点是:能够对大量的数据和信息进行保存和处理,主要用于CAD、CAM中;面向对象数据库,它的特点是:将面向对象的模型、方法和机制,与先进的数据库技术有机的结合而形成的新型数据库系统。第2章一.选择题 1.D2.D3.A4.C5.B6.D二.填空题1.实体完整性、参照完整性、用户自定义完整性。2.(A,B)R1(A,D)和R2(A,B,C).3.原子特性4.外键5.F1=(A→B,A→C,A→D)6.选择三.问答题1.答:实体:是现实世界中任何可区分可识别的事物。实体属性:实体的特征成为属性。区别于关系属性:二维表的每一列在关系中称为属性关键字:关系中能够唯一区分确定不同元组的单个属性或属性组合称为该关系的一个关键字。又被称为键或码(key)外部关键字:如果关系中某个属性或属性组合并非本关系中的关键字但却是另一个关系中的关键字,这样的属性或属性组合被称为本关系中的外部关键字或外键(FOREIGNKEY,FK)关系模型:采用二维表描述实体的静态特征及其相互联系。用表的行描述实体对象用元素描述对象的相应属性。有关系运算规则和完整性约束规则来限制。数据约束:是SQLServer提供的自动保持数据库中数据完整性的一种机制它定义了可输入表或表的单个列中的数据限制条件。数据操作:对数据创建管理维护包括对数据的插入删除更新等的操作使数据信息的使用完整方便快捷。属性间函数的依赖:设X、Y、Z是关系模式R的不同属性集,若X→Y(并且Y→X不成立)Y→Z,称X传递决定Z或称Z传递函数依赖于X。2.答:规范化理论关系数据库中关系规范化问题在1970年Godd提出关系模型时就读者应注意的是:规范化是一种理论,它研究如何通过规范以解决异常与冗余现象3.答:(1)R的所有函数依赖关系:编号→姓名,编号→出生年月,编号→专业,编号→班级,专业→辅导员(2)候选关键字:学号(3)因为R存在传递函数依赖:编号→辅导员,所以R不是3NF。将R分解为3NF:R1(编号,姓名,出生年月,专业,班级)和R2(专业,辅导员)4.答:RUS={(a1,b1,c1),(a2,b2,c1),(a3,b2,c3),(a2,b2,c2),(a3,b3,c4)}R∩S={a1,b1,c1}R-S={(a2,b2,c1),(a3,b2,c3)}Π(A,B)={(a1,b1,c1),(a2,b2,c1)}第3章一.选择题1.A2.D3.B4.C5.B二.填空题1.SQLServerEnterprise版、SQLServerStandard版、SQLServer2008Developer版、SQLServerWorkgroup版、SQLServer2008Web版、SQLServerExpress版、SQLServerCompact3.5版 2.Windows混合模式3.数据操纵4.已注册服务器窗口,对象资源管理器文档窗口5.数据查询语言,数据定义语言,数据操纵语言和数据控制语言三.问答题1.答:SQLServer2008与SQLServer2005相比,在功能、可靠性、实用性等方面有了很大的扩展和提高,实现与MicrosoftVisualStudio、MicrosoftOfficeSystem以及新的开发工具包的紧密集成。无论是开发人员、数据库管理人员、操作人员还是决策者,SQLServer2008都可以为其提供全新的解决方案,帮助用户从数据中获取更多的信息。与以前的版本相比较,SQLServer2008增加了新的功能,主要体现在数据管理、商务智能和开发工具等方面,如:SSIS(SQLServer集成服务)、SSAS(SQLServer分析服务)、SSRS(SQLServer报表服务)Office集成、Transact-SQL的改进。2.答:SQLServer2008企业版要求必须安装在WindowsServer2003及WindowsServer2008的系统上。有两点需要注意:(1)SQLServer2008已经不再提供对Windows2000系列操作系统的支持。(2)64位的SQLServer程序仅支持64位的操作系统。SQLServer2008的运行还需要.NETFramework版本。其中WindowsServer2003(64位)IA64上的SQLServer2008需要.NETFrameworkSP2。SQLServerExpress版本需要.NETFramework2.0SP2,SQLServer的其他版本需要.NETFramework3.5SP1。另外,所有的SQLServer2008安装还需要使用MicrosoftInternetExplorer6SP1或者更高版本。Microsoft管理控制台(MMC)、SQLServerManagementStudio、BusinessIntelligenceDevelopmentStudio、ReportingServices的报表设计器组件和HTML帮助都需要InternetExplorer6SP1或更高版本。第4章一.选择题1.A2.B3.D4.A5.C二.填空题1.数据文件事务日志文件2.master、tempdb、model、msdb3.数据文件,事务日志文件和文件组4.55.createdatabase,alterdatabasedatabase-name,dropdatabase三.问答题1.答:最少1个主文件mdf,一个日志文件ldf,主要数据文件包含数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件。主要数据文件的建议文件扩展名是.mdf。2.答:在sql出现严重bug的时候,在改变sql的根本配置的时候,在改变用户角色的时候,在强制修改master数据库的时候3.答:修改模板库,在模板库中创建users表,以后新建的库就包含该表 四.应用题答:(1)CREATEDATABASESalesONPRIMARY(NAME=SalDat01,FILENAME="C:DBSalDat01.MDF",),(NAME=SalDat02,FILENAME="C:DBSalDat02.NDF",),FILEGROUPFileGrp1(NAME=SalDat11,FILENAME="D:DBSalDat11.NDF",),(NAME=SalDat12,FILENAME="D:DBSalDat12.NDF",),(NAME=SalDat13,FILENAME="D:DBSalDat13.NDF",)(2)ALTERDATABASESalesADDLOGFILE(NAME=SalLog2,FILENAME="C:DBSalLog2.LDF",)(3)ALTERDATABASESalesADDFILE(NAME=SalDat03,FILENAME="C:DBSalDat03.NDF",SIZE=5MB,FILEGROWTH=20%)(4)ALTERDATABASESalesSETSINGLE_USER(5)DROPDATABASEOldSales 第5章一.选择题1.C2.A3.C4.C5.C二.填空题1.-231~231-1之间的整数0-2555之间的整数2.输入存储字段小于100时按原字段存,大于100时截取100位83.日期时间数字数据4.字段名称和列5.insertupdatetruncate或delete三.问答题1.答:Varchar是变长字符数据,其长度不超过8KB。char是定长字符数据,其长度最多为8KB。nchar(n)包含n个字符的固定长度Unicode字符数据。n的值必须介于1与4,000之间。存储大小为n字节的两倍。decimal数据类型最多可存储38个数字,所有数字都能够放到小数点的右边。decimal数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。float和real数据类型被称为近似的数据类型。在近似数字数据类型方面,float和real数据的使用遵循IEEE754标准。近似数字数据类型并不存储为多数数字指定的精确值,它们只储存这些值的最近似值。在很多应用程序中,指定值与存储值之间的微小差异并不明显。money数据类型存储货币数据。货币数据存储的精确度为四位小数。可以存储在money数据类型中的值的范围是-922,337,203,685,477.5808至+922,337,203,685,477.5807(需8个字节的存储空间)。2.答:不能比较大小,因为NULL是未定值不是没有值,而货币类型是一个实际数据,故不能比较大小。3.答:共同点:在数据库中都是用以删除数据的语句。不同点:(1)用以删除表即删除行,可以删除数据库,删除时组成该数据的所有磁盘文件将被同时删除;(2)用以删除所有列,删除一次在事务日志中记录一次;(3)用以删除列,每次删除都不记录事务日志只记录删除释放,(3)比(2)删除的速度快。第6章一.选择题1.C2.A3.B4.B5.C二.填空题1.TOP/PERCENT2.UNION查询数据/结果集3.嵌套查询/子查询4.内连接,外连接5.等值连接自然连接 6.into三.问答题1.答:进行排序的子句是orderby,消除重复行的关键字是DISTINCT子句2.答:部门号!=”wh1”AND部门号!=”wh2”numberBETWEEN550AND6503.答:GROUPBY子句中的表达式可以包含FROM子句中表、派生表或视图的列。这些列不必显示在SELECT子句列表中任何非聚合表达式中的每个表列或视图列都必须包括在GROUPBY列表中:GROUPBY子句可以将查询结果按指定列进行分组,该列值相等的记录为一组。通常,在每组中通过聚合函数来计算一个或多个列。4.答:简单地说:HAVING与分组条件有关,sql语句的GROUP BY 后只能跟HAVING条件语句,而不能用WHERE语句;WHERE与筛选记录条件有关。5.答:自然连接。四.应用题1.(1)SELECT*FROMSTUDENTORDERBYs_no(2)SELECT*FROMstudentWHEREs_sex=’女’(3)SELECTs_name,birthday,year(getdate())-year(birthday)FROMstudentWHEREs_sex=’男’(4)SELECTs_name,birthday,year(getdate())-year(birthday),c_no,scoreFROMstudentJOINscoONstudent.s_no=sco.s_no(5)SELECTc_no,scoreFROMstudentJOINscoONstudent.s_no=sco.s_noWHEREs_name=’姓名’(6)不及格学生的姓名。SELECTDISTINCTs_nameFROMstudentJOINscoONstudent.s_no=sco.s_noWHEREscore<60(7)按性别进行分组查询,查询男女生的平均成绩。SELECTs_sex,AVG(score)FROMstudentJOINscoONstudent.s_no=sco.s_noGROUPBYs_sex2.(1)SELECT姓名,(基本工资+津贴+奖金-扣除)AS实发工资FROM工资,职工WHERE职工.工资号=工资.工资号(2)SELECT*FROM职工WHERE出生日期>"1963-1-1"(3)SELECT部门名,min(出生日期)FROM部门JOIN职工ON部门.部门号=职工.部门号GROUPBY部门名(4)SELECT姓名,性别,YEAR(getdate())-YEAR(出生日期)AS年龄FROM职工WHEREYEAR(getdate())-YEAR(出生日期)>=35(5)SELECT部门名,COUNT(职工号)AS职工人数FROM部门,职工WHERE部门.部门号=职工.部门号GROUPBY部门名HAVINGcount(*)>=10ORDERBYcount(职工号 )DESC第7章一.选择题1.C2.C3.A4.D5.B二.填空题1.ALTERTABLECREATEINDEX2.PRIMARYKEYUNIQUE3.视图4.定义5.计算列6.修改删除三.问答题1.答:在聚集索引中,表中各记录的物理顺序与键值的逻辑(索引)顺序相同。只有在表中建立了一个聚集索引后,数据才会按照索引键值指定的顺序存储到表中。由于一个表中的数据只能按照一种顺序来存储,所以在一个表中只能建立一个聚集索引。如果不是聚集索引,表中各记录的物理顺序与键值的逻辑顺序不匹配。在检索(SELECT)记录的场合,聚集索引比非聚集索引有更快的数据访问速度。在添加(INSERT)或更新(UPDATE)记录的场合,由于使用聚集索引时需要先对记录排序,然后再存储到表中,所以使用聚集索引要比非聚集索引速度慢。在一个表中只能有一个聚集索引,但允许有多个非聚集索引。2.答:一个复合索引中最多包含16个字段。3.答:主健、唯一约束以上两种情况下会自动生成。不能在由PRIMARYKEY约束或UNIQUE约束创建的索引上使用DROPINDEX语句。为了删除索引必须先删除约束。4.答:视图是一个虚拟表,并不表示任何物理数据,而只是用来查看数据的窗口而已。同真实的表一样,视图包含一系列带有名称的列和数据行,其内容由查询定义。但是视图并不在数据库中以存储的数据形式存在,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在导出视图的基础表中。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除,但对数据的操作要满足一定的条件。当对通过视图看到的数据进行修改时,相应的基础表的数据也会发生变化,同样,若基础表的数据发生变化,这种变化也会自动地反映到视图中。对视图所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。视图通常用来集中、简化和自定义每个用户对数据库的不同认识。视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。从SQLServer复制数据时也可使用视图来提高性能并分区数据。视图的作用主要表现在以下几个方面。1.简化操作 视图可以简化用户操作数据的方式。可将经常使用的联接、投影、联合查询和选择查询定义为视图,这样,用户每次对特定的数据执行进一步操作时,不必指定所有条件和限定。例如,一个用于报表目的,并执行子查询、外连接及联合以便从一组表中检索数据的复合查询,就可以创建为一个视图。视图简化了对数据的访问,因为每次生成报表时无须提交基础查询,而是查询视图。2.定制特定数据视图使用户能够着重于他们所感兴趣的特定数据和所负责的特定任务,不必要的数据或敏感数据可以不出现在视图中。例如,可定义一个视图不仅检索由客户经理处理的客户数据,而且还可以根据使用该视图的客户经理的登录ID决定检索哪些数据。3.导出和导入数据可使用视图将数据导出到其他应用程序。可基于多个表创建视图,然后可以使用bcp实用工具导出视图定义的数据。如果使用INSERT语句可以在某些视图中插入行,那么使用bcp实用工具或BULKINSERT语句也可将数据文件中的数据导入视图。4.跨服务器组合分区数据Transact-SQLUNION集合运算符可在视图内使用,将单独表的两个或多个查询的结果组合到单一的结果集中。分区试图可基于来自多个异类源(如远程服务器)的数据以创建数据库服务器的联合体。5.提供向后兼容性在表的架构更改时,利用视图能够为表创建向后兼容接口。6.安全性可以用GRANT和REVOKE命令为各种用户授予在视图上的操作权限,而没有授予用户在表上的操作权限。这样通过视图,用户只能查询或修改他们各自所能见到的数据,数据库中的其他数据对他们来说是不可见的或不可修改的。第8章一.选择题1.B2.A3.C4.A5.D二.填空题1.行2.createrule和createdefault3.唯一性(非主键)4.(主键)primarykey多5.查询约束,唯一性约束。6.CONSTRANT和CONSTRANT_NAME三.问答题1.答:指数据的精确性(Accuracy)和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。2.答:数据完整性分为四类:实体完整性(EntityIntegrity)、域完整性(DomainIntegrity)、参照完整性(ReferentialIntegrity)、用户定义的完整(User-definedIntegrity)。3.答:约束用于确保数据库数满足业务规则。约束包括:NOTNULL,UNIQUE,PRIMARYKEY,FOREIGNKEY以及CHECK等5种类型。4.答: 特点:外键用于确保相关的两个字段之间的参照关系,以实现参照完整性约束;外键约束通常构建于来自不同的表的两个字段之间字表外键列的值必须在主表参照列值的范围内,或者为空外键参照的必须是主表的主键或者唯一键主表主键或唯一键值被字表参照时,主表相应记录不允许被删除。5.答:定义默认约束通过DEFAULT,定义检查约束通过CHECK。第9章一.选择题1.B2.C3.C4.D5.D二.填空题1.局部2.44821263.gf4.,/**/5.Transact,begin。6.return,continue7.insensitint,select三.问答题1.答:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符、字符串串联运算符和一元运算符。2.答:全局变量是整个程序都可访问的变量,生存期从程序开始到程序结束;全局变量分配在全局数据段,在程序开始运行的时候被加载。3.答:aBETWEEN10AND304.答:连接运算法。5.答:游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。游标的种类有:Transact_SQL游标,API服务器游标和客户游标6.答:控制在一个WHILE循环中的游标活动。7.答:CHARINDEX和PATINDEX函数常常用来在一段字符中搜索字符或者字符串。如果被搜索的字符中包含有要搜索的字符,那么这两个函数返回一个非零的整数,这个整数是要搜索的字符在被搜索的字符中的开始位数。PATINDEX函数支持使用通配符来进行搜索,然而CHARINDEX不支持通配符。第10章一.选择题1.C2.A3.A4.D5.A二.填空题1.sp 2.存储过程3.BEGINTRANCOMMIL或COMMITTRAN4.琐记三.问答题1.答:存储过程是一组予编译的SQL语句,它的优点有1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。2.答:存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。exec存储过程名称3.答:使用输出参数类似于使用返回值。但是输出参数具有两个重要的优势。可以使用输出参数从存储过程传递出VarChar,Int,Money或任何其他数据类型的值。而返回值则只能返回整数。输出参数的另一个优势就是在一个存储过程中可以有多个输出参数。一个存储过程可以包含1024个参数(其中包括输入和输出参数),但是只能包含一个返回值。比如下面的存储过程根据提供的作者名来检索该作者的姓,该存储过程有一个名为@firstname的输入参数和一个@lastname的输出参数。CreateProcedureGetLastName(@firstnameVarchar(20),@lastnameVarchar(20)Output)AsSelect@lastname=au_lnameFromAuthorsWhereau_fname=@firstname4.答:可以把部分用transaction-sql编写的程序作为存储过程存储在sqlserver中,并创建应用程序来调用存储过程,对数据结果进行处理存储过程能够通过接收参数向调用者返回结果集,结果集的格式由调用者确定;返回状态值给调用者,指明调用是成功或是失败5.答:使用SETNOCOUNTON默认情况下,存储过程将返回过程中每个语句影响的行数。如果不需要在应用程序中使用该信息(大多数应用程序并不需要),请在存储过程中使用SETNOCOUNTON语句以终止该行为。根据存储过程中包含的影响行的语句的数量,这将删除客户端和服务器之间的一个或多个往返过程。尽管这不是大问题,但它可以为高流量应用程序的性能产生负面影响。createproceduretest_MyStoredProc@param1intassetnocounton不要使用sp_prefixsp_prefix是为系统存储过程保留的。数据库引擎将始终首先在主数据库中查找具有此前缀的存储过程。这意味着当引擎首先检查主数据库,然后检查存储过程实际所在的数据库时,将需要较长的时间才能完成检查过程。而且,如果碰巧存在一个名称相同的系统存储过程,则您的过程根本不会得到处理。尽量少用可选参数在频繁使用可选参数之前,请仔细考虑。通过执行额外的工作会很轻易地影响性能,而根据为任意指定执行输入的参数集合,这些工作时不需要的。您可以通过对每种可能的参数组合使用条件编码来解决此问题,但这相当费时并会增大出错的几率。在可能的情况下使用OUTPUT参数通过使用OUTPUT参数返回标量数据,可以略微提高速度并节省少量的处理功率。在应用程序需要返回单个值的情况下,请尝试此方法,而不要将结果集具体化。在适当的情况下,也可以使用OUTPUT参数返回光标,但是我们将在后续文章中介绍光标处理与基于集合的 处理在理论上的分歧。提供返回值使用存储过程的返回值,将处理状态信息返回给进行调用的应用程序。在您的开发组中,一组返回值及其含义标准化,并一致地使用这些值。这会使得处理调用应用程序中的错误更加容易,并向最终用户提供有关问题的有用信息。首先使用DDL,然后使用DML将DML语句放在数据定义语言(DDL)语句之后执行(此时DML将引用DDL修改的任意对象)时,SQLServer将重新编译存储过程。出现这种情况,是由于为了给DML创建计划,SQLServer需要考虑由DDL对该对象所作的更改。如果留意存储过程开头的所有DDL,则它只需重新编译一次。如果将DDL和DML语句混合使用,则将强制存储过程多次进行重新编译,这将对性能造成负面影响。始终使用注释。6.答:触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT或DELETE。触发器可以查询其它表,而且可以包含复杂的SQL语句。它们主要用于强制复杂的业务规则或要求。例如,可以控制是否允许基于顾客的当前帐户状态插入定单。触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束7.答:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。简单举个例子就是你要同时修改数据库中两个不同表的时候,如果它们不是一个事务的话,当第一个表修改完,可是第二表改修出现了异常而没能修改的情况下,就只有第二个表回到未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,可是第二表改修出现了异常而没能修改的情况下,第一个表和第二个表都要回到未修改的状态!这就是所谓的事务回滚。8.答:多个用户同时对库的并发操作时会带来以下不一致的问题:丢失更新A,B两个用户读同一并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统脏读A用户修改了,随后B用户又读出该,但A用户因为某些原因取消了对的修改,恢复原值,此时B得到的就与库内的产生了不一致不可重复读A用户读取,随后B用户读出该并修改,此时A用户再读取时发现前后两次的值不一致并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生不一致9.答:从库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁10.答:死锁就是多个用户申请不同封锁,由于申请者均拥有一部分封锁权而又等待其他用户拥有的部分封锁而引起的无休止的等待可以使用SETDEADLOCK_PRIORITY控制在发生死锁情况时会话的反应方式。如果两个进程都锁定,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。11.答:1执行EXECSP_LOCK报告有关锁的信息2查询设计器中按Ctrl+2可以看到锁的信息 第11章一.选择题1.C2.D3.A4.D二.填空题1.登录账号角色2.访问许可和身份验证3.对象权限、语句权限和隐含权限4.GRANT和REVOKE5.创建角色、指定角色权限和添加角色成员三.问答题1.答:Windows身份验证和SQLServer身份验证。主要集中在信任连接和非信任连接。windows身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证,我们称为“信任连接”,但是在远程连接的时候会因NTML验证的缘故,无法登录。混合模式验证就比较既当本地用户访问sql时候采用windows身份验证建立信任连接,当远程用户访问时由于未通过windows认证,而进行sqlserver认证(使用sa的用户也可以登录sql),建立“非信任连接”,从而使得远程用户也可以登录。更加直接一些就是windows身份验证,不验证sa密码,如果windows登录密码不正确,无法访问sql,混合模式既可以使用windows身份验证登录,有可以在远程使用sa密码登录。准确来说,混合身份验证模式,也就是基于Windows身份验证和SQLServer身份混合验证。在这个模式中,系统会判断账号在Windows操作系统下是否可信,对于可信连接,系统直接采用Windows身份验证机制,而非可信连接,这个连接不仅包括远程用户还包括本地用户,SQLServer会自动通过账户的存在性和密码的匹配性来进行验证。2.答:用户通过MicrosoftWindows用户帐户连接时,SQLServer使用Windows操作系统中的信息验证帐户名和密码。这是默认的身份验证模式,比混合模式安全得多。Windows身份验证使用Kerberos安全协议,通过强密码的复杂性验证提供密码策略强制,提供帐户锁定支持,并且支持密码过期3.答:允许用户使用Windows身份验证或SQLServer身份验证进行连接。通过Windows用户帐户连接的用户可以使用Windows验证的受信任连接。如果必须选择“混合模式身份验证”并要求使用SQL登录以适应旧式应用程序,则必须为所有SQL帐户设置强密码。这对于属于sysadmin角色的帐户(特别是 sa 帐户)尤其重要。4.答:1)打开SQLServerManagementStudio2)服务器名称上右键选择“属性”,打开“服务器属性”对话框,在“选择页”里选择“安全性”,在“服务器身份验证”里选择“SQLServer和Windows身份验证模式”,单击“确定”,完成。然后添加一个新的登录名和密码1)打开SQLServerManagementStudio2)选择“安全性→登录名”,右击“登录名”,选择“新建登录名”,打开“登录名-新建”对话框,在“常规”选项卡中,输入登录名,如“aaa”,选择“SQLServer身份验证”,输入密码和确认密码,去掉“强制实施密码策略”、“强制密码过期”、“用户在下次登录时必须更改密码”前的勾,选择默认数据库,默认语言选择“SimplifiedChinese”3)选择“服务器角色”选项卡,选择“sysadmin”,服务器角色名解释看SQLServer2008服务器角色和数据库角色名全解。 4)选择“用户映射”选项卡,选择要求的数据库,根据个人要求多选或是单选。5)选择“状态”选项卡,“设置”里“是否允许连接到数据库引擎”选择“授予”,“登录”里选择“启用”,单击“确定”,完成。最后退出服务器,用新建的登录名“aaa”登录服务器,成功!5.答:个公司可能成立慈善活动委员会,其中包括来自不同部门,来自组织中各种不同级别的职员。这些职员需要访问数据库中特殊的项目表。没有只包括这些职员的现有WindowsNT4.0或Windows2000组,而且没有其它理由在WindowsNT4.0或Windows2000中创建这样一个组。可以为此项目创建一个自定义SQLServer数据库角色CharityEvent,并将个别的WindowsNT和Windows2000用户添加到此数据库角色。当应用权限后,数据库角色中的用户便获得对表的访问权限。其它数据库活动的权限不受影响,只有CharityEvent用户可以使用该项目表。SQLServer角色存在于一个数据库中,不能跨多个数据库。6.答:固定数据库角色包括固定角色和用户定义数据库角色,固定角色,涉及服务器配置管理以及服务器和数据库的权限管理,固定服务器角色独立于各个数据库,具有固定的权限。可以再这些角色中添加用户以获得相关的管理权限。固定数据库角色是指角色所具有的管理、访问数据库权限已被sqlserver定义,并且sqlserver管理者不能对其所具有的权限进行任何修改。第12章一.选择题1.A2.B3.A4.A二.填空题1.硬盘管道磁带2.BACKUPRESTORE3.完全备份事务日志备份差异备份文件和文件组备份4.简单恢复完全恢复大容量日志记录恢复三.问答题1.答:完整备份:备份整个数据库的所有内容,包括事务日志。该备份类型需要比较大的存储空间来存储备份文件,备份时间也比较长,在还原数据时,也只要还原一个备份文件。差异备份:是完整备份的补充,差异备份只备份上次完整备份后更改的数据。相对完整备份来说,差异备份的数据量比完整数据备份小,备份的速度也比完整备份要快。因此,差异备份通常作为经常用到的备份。在还原数据时,要先还原前一次做的完整备份后再还原最后一次所做的差异备份,这样才能让数据库里的数据恢复到与最后一次差异备份时的相同内容。事务日志备份:事务日志备份只备份事务日志里的内容。事务日志记录了上一次完整备份或事务日志备份后数据库的所有变动过程。事务日志记录的是某一段时间内的数据库变动情况,因此在做事务日志备份之前,也必须要做完整备份。与差异备份类似,事务日志备份的备份文件和时间都会比较小,但是在还原数据时,除了先要还原完整备份之外,还要依次还原每个事务日志备份,而不是只还原最近一个事务日志备份。 文件和文件组备份:如果在创建数据库时,为数据库创建了多个数据库文件或文件组,可以使用该备份方式。使用文件和文件组备份方式可以只备份数据库中的某些文件,该备份方式在数据库文件非常庞大的时候十分有效,由于每次只备份一个或几个文件或文件组,可以分多次来备份数据库,避免大型数据库备份的时间过长。另外,由于文件和文件组备份只备份其中一个或多个数据文件,那么当数据库里的某个或某些文件损坏时,可以只还原损坏的文件或文件组备份即可。2.答:可以使用系统存储过程sp_addumpdevice创建备份设备。3.答:执行备份的第一步是创建将要包含备份内容的备份文件。为了执行备份操作,在使用之前所创建的备份文件称为永久性的备份文件。这些永久性的备份文件也称为备份设备。如果希望所创建的备份设备反复使用或执行系统的自动化操作例如备份数据库,那么必须使用永久性的备份文件。4.答:导入就是为了避免不必要的输入而把需要的资料直接利用!导出就是把处理好的信息以原格式或其他格式输出5.答:分离数据库:对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTERDATABASE命令,并利用一个能够中断已存在链接的终止选项来把数据库设置为SINGLE_USER模式,设置为SIGLE_USER代码如下:ALTERDATABASE[DatabaseName]SETSINGLE_USERWITHROLLBACKIMMEDIATE下面是分离数据库的CMD命令EXECsp_detach_dbDatabaseName一旦一个数据库分离成功,从SQLServer角度来看和删除这个数据库没有什么区别。附加数据库:对于附加数据库,可以使用sp_attach_db存储过程,或者使用带有FORATTACH选项的CREATEDATABASE命令,在SQLServer2008或更高的版本中推荐使用后者,前者是为了向前兼容,它正在逐渐淘汰,而后者更提供更多对文件的控制。第13章一.选择题1.B2.C3.B4.B5.D二.填空题1.客户端应用服务数据库服务器2.ConnectionCommandDateAdapterDateSet3.引用4.Command5.更新数据记录条数三.问答题1.答:1)需求分析2)概念结构设计3)逻辑结构设计4)物理结构设计5)数据库实施6)数据库运行与维护2.答:从数据库最终用户角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器多层结构。这是数据库外部体系结构。物理存储结构、逻辑存储结构、内存结构和实例进程结构。这是内部体系结构3.答:ADO.NET对象模型中有五个主要的组件,分别是Connection对象、Command 对象、DataSetCommand、DataSet以及DataReader。4.答:一个connection对象描述了到数据源的物理连接。你可以使用odbc也可以利用oledb来连接数据源。当你打开一个connectiont对象时你就会试图连接数据库。Connection对象的state属性会告诉我们连接是否成功。通过connection对象的execute方法向数据源发送SQL语句或运行存存储过程。如果你向数据源发送的命令要求数据源返回记录集,那么记录集对象会自动的被创建。当你连接上数据库后你可以关闭connection对象。Open打开一个数据源连接Close关闭与数据源的连接以及相关的对象Execute执行一个相关的查询(SQL语名或存储过程,或数据提供者特定文本)BeginTrans开始一个新事务CommitTrans保存一些改变或当前的事务目的是为开始一个新事务RollbackTrans取消一些改变在当前事务和结束事务时,目的是开始一个新事务下面列出了一些常用的CONNECTION对象的属性。ConnectionString包含建立与数据源的连接的相关信息ConnectionTimeout显示尝试建立与数据源的连接和产生错误所花去的时间CommandTimeout显示在中断一个尝试和返回一个错误前执行该项指令所花去的时间State表明是否与数据源连接上或已关闭或正在连接中Provider显示连接提供者的名称Version显示ado版本号CursorLocation设定或返回一个提供者光标函数的定值如何利用connection对象连接数据源?用一个connnection对象,只要指定一个connection字符串,目的是用来指定你想要联结的数据源,然后调用open方法来建立链接。通过connectionstring提供的信息用OPEN方法可以非常轻松的建立与数据的连接。如果你决定用connection对象进行工作,那么你可以用它的STATE属性。如果connection对象被打开了那么它的返回值为adstateopen,如果不是它的返回值为adstateclosed。'