sql-server-2008-数据库应用与开发教程--课后习题参考答案.doc_第1页
sql-server-2008-数据库应用与开发教程--课后习题参考答案.doc_第2页
sql-server-2008-数据库应用与开发教程--课后习题参考答案.doc_第3页
sql-server-2008-数据库应用与开发教程--课后习题参考答案.doc_第4页
sql-server-2008-数据库应用与开发教程--课后习题参考答案.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL Server 2008数据库应用与开发教程(第二版)SQL Server 2008数据库应用与开发教程(第二版)第1章 习题参考答案1. 简述SQL Server 2008系统中主要数据库对象的特点。答:主要的数据库对象包括数据库关系图、表、视图、同义词、存储过程、函数、触发器、程序集、类型、规则和默认值等。“表”节点中包含了数据库最基本、最重要的对象表。表实际用来存储系统数据和用户数据,是最核心的数据库对象。“视图”节点包含了数据库中的视图对象。视图是一种虚拟表,用来查看数据库中的一个或多个表,视图是建立在表基础之上的数据库对象,它主要以SELECT语句形式存在。在“同义词”节点中包含了数据库中的同义词对象。这是Microsoft SQL Server 2008系统新增的一种对象。“可编程性”对象是一个逻辑组合,它包括存储过程、函数、触发器、程序集、类型、规则和默认值等对象。数据库中的函数对象包含在“函数”节点中。函数是接受参数、执行复杂操作并将结果以值的形式返回的例程。2. SQL Server 2008数据库管理系统产品分为哪几个版本,各有什么特点?答:SQL Server 2008数据库管理系统产品的服务器版本包括了企业版和标准版,专业版本主要包括以下版本:工作组版(Workgroup)、开发人员版(Developer)、免费精简版(Express)、Web版,以及免费的集成数据库SQL Server Compact 3.5。3. SQL Server 2008包含哪些组件,其功能各是什么?答:SQL Server 2008的体系结构是对SQL Server的组成部分和这些组成部分之间的描述。Microsoft SQL Server 2008系统由4个组件组成,这4个组件被称为4个服务,分别是数据库引擎、Analysis Services、Reporting Services和Integration Services。数据库引擎是Microsoft SQL Server 2008系统的核心服务,负责完成数据的存储、处理、查询和安全管理等操作。分析服务(SQL Server Analysis Services,简称为SSAS)的主要作用是提供多维分析和数据挖掘功能。报表服务(SQL Server Reporting Services,简称为SSRS)为用户提供了支持Web方式的企业级报表功能。集成服务(SQL Server Integration Services,简称SSIS)是一个数据集成平台,负责完成有关数据的提取、转换和加载等操作。4. 安装SQL Server 2008之前应该做什么准备工作?答:(1) 增强物理安全性(2) 使用防火墙 (3) 隔离服务 (4) 禁用NetBIOS和服务器消息块5. SQL Server 2008支持哪两种身份验证?答:Windows 身份验证或混合模式身份验证。6. 如何注册和启动SQL Server 服务器?答:1. 注册服务器使用Microsoft SQL Server Management Studio工具注册服务器的步骤如下:(1) 启动Microsoft SQL Server Management Studio工具,选择“视图”|“已注册”命令或者按下快捷键Ctrl+Alt+G,在打开的“已注册的服务器”窗口中选中“数据库引擎”图标。(2) 在“数据库引擎”上单击鼠标右键,从弹出的快捷菜单中选择“新建”|“服务器注册”命令,即可打开如图1-20所示的“新建服务器注册”对话框。选择“常规”选项卡,可以在该选项卡中输入将要注册的服务器名称。(3) 选择“连接属性”选项卡,如图1-21所示,在该选项卡中可以设置连接到的数据库、网络以及其他连接属性。(4) 然后单击“测试”按钮,可以对当前设置的连接属性进行测试。如果出现如图1-23所示的“新建服务器注册”消息框,则表示连接属性的设置是正确的。(5) 完成连接属性设置后,单击“保存”按钮,即可完成连接属性的设置操作。接着单击“保存”按钮,即可完成新建服务器注册的操作。新注册的服务器名称将出现在列表中。 2. 启动服务器可以通过“开始”菜单来启动SQL Server Configuration Manager,7. 熟悉查询分析器的功能与使用。(略)第2章 习题参考答案1. 在Microsoft SQL Server 2008 中,主数据文件的后缀是_.mdf_,日志数据文件的后缀是_.ldf_。2. 在创建数据库时,系统自动将_master_系统数据库的所有用户定义的对象复制到新建的数据库。3. 每个文件组可以有_多_个日志文件。4. 使用T-SQL语句创建数据库的语句是:CREATE DATABASE;创建表的语句是:CREATE TABLE第3章 习题参考答案1. 在一个表上可以定义_多_个CHECK约束。2. 创建表的语句是:_CREATE TABLE 表名_。3. 表和表之间的关系是通过_连接 实现的。4. 删除表“employ”中的“employdate”列所使用的语句是什么? 答: ALTER TABLE employ ( DROP employdate )5. 为表“employ”删除主键约束的语句是怎样的? 答: ALTER TABLE employ ( DROP CONSTRAINT 约束名 PRIMARY KEY )第4章 习题参考答案1. 在SQL Server 2008中对数据使用SSMS图形化界面进行修改,与使用T-SQL修改数据,两种方法相比较,哪一种功能更强大、更为灵活?试举例说明。 答:使用T-SQL修改数据功能更强大,更为灵活。2. 向附录A 学生成绩(XSCJ)数据库的表中送入或修改成样本数据。(略)3. 写出T-SQL语句,对产品销售数据库(库名CPXS)产品表进行如下操作:(1) 插入如下记录0001空调30002000203冰箱25001000301彩电280050答:语句如下:insert into 产品表Values(0001,空调3000,200);insert into 产品表Values(0203,冰箱2500,100);insert into 产品表Values(0301,彩电2800,50);(2) 将产品数据库的产品表中的每种商品的价格打8折。 语句如下: update 产品表SET 价格=价格*0.8(3) 将产品数据库的产品表中价格打8折后小于50的商品删除。 DELETE FROM 产品表 WHERE 价格50第5章 习题参考答案1. 简述SQL Server 2008的安全层次?答:在SQL Server 2008中,数据的安全保护由4个层次构成。SQL Server 2008主要对其中的3个层次提供安全控制。下面分别对每个层次进行简介。(1) 远程网络主机通过Internet访问SQL Server 2008服务器所在的网络,这由网络环境提供某种保护机制。(2) 网络中的主机访问SQL Server 2008服务器,首先要求对SQL Server进行正确配置,其内容将在下一节中介绍;其次是要求拥有对SQL Server 2008实例的访问权 登录名,其内容将要在9.2.1小节中介绍。(3) 访问SQL Server 2008数据库,这要求拥有对SQL Server 2008数据库的访问权数据库用户,其内容将要在9.2.2小节中介绍。(4) 访问SQL Server 2008数据库中的表和列,这要求拥有对表和列的访问权 权限,其内容将要在9.5.2小节中介绍。2. 对SQL Server实例访问,SQL Server 2008支持哪几种身份验证模式?答:SQL Server 2008支持两种身份验证模式:Windows身份验证模式和混合身份验证模式。3. 在SQL Server 2008中有几类角色?答:三类:服务器角色、数据库角色、应用程序角色4. 什么是架构,架构有什么用处?答:SQL Server 2008实现了ANSI中有关架构的概念。架构是一种允许用户对数据库对象进行分组的容器对象。架构对如何引用数据库对象有很大的影响。在SQL Server 2008中,一个数据库对象通过4个命名部分所组成的结构来引用:.使用架构的一个好处是它可以将数据库对象与数据库用户分离,可以快速地从数据库中删除数据库用户。在SQL Server 2008中,所有的数据库对象都隶属于架构,在对数据库对象或者对其存在于数据库应用程序中的相应引用没有任何影响的情况下,可以更改并删除数据库用户。这种抽象的方法允许用户创建一个由数据库角色拥有的架构,以使多个数据库用户拥有相同的对象。5. 如何管理SQL Server 2008的权限层次结构?答:对数据的访问是通过SQL Server 2008的权限层次结构进行管理的。可以使用GRANT、DENY和REVOKE语句来管理这个权限层次结构。 GRANT:允许一个数据库用户或角色执行所授权限指定的操作。 DENY:拒绝一个数据库用户或角色的特定权限,并且阻止它们从其他角色中继承这个权限。 REVOKE:取消先前被授予或拒绝的权限。6. 管理对可编程对象的访问主要涉及哪些可编程对象? 答:可编程对象,如存储过程及用户定义的函数,具有自己的安全上下文。数据库用户需要获得授权以执行存储过程、函数和程序集。一旦数据库引擎检查了执行可编程对象的权限,就会在可编程对象内部对其所执行的操作进行权限检查。当数据库对象按顺序相互访问时,该访问顺序将形成一个所有权链。第6章 习题参考答案1. T-SQL和SQL的关系是什么? 答:SQL全称是“结构化查询语言(Structured Query Language)”SQL(Structured Query Language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。T-SQL是标准 SQL 程式设计语言的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。可以理解成T-sql是SqlServer支持的sql语法,而不是软件。2. 试述T-SQL语言的特点。答:特点包括: 一体化。T-SQL语言包含4个组成元素: 数据查询语言(SELECT语句)、数据操纵语言DML(如INSERT, UPDATE, DELETE语句)、数据定义语言DDL(如CREATE, DROP语句)和数据控制语言(如COMMIT, ROLLBACK等语句)。这些元素集数据定义、数据查询、数据操纵、数据控制、事务管理和附加语言元素为一体,方便用户使用。其中数据查询语言SELECT是它的核心。 两种使用方式:T-SQL支持交互方式和嵌入式方式。用户既可以使用T-SQL直接查询存储在数据库中的数据,又可以把T-SQL语句嵌入到某种高级程序设计语言(如Visual C#.NET、Java等)中使用。 非过程化语言。在T-SQL语句中,用户只需指出“做什么”,而不需要指出系统“如何做”,语句具体的操作过程由系统自动完成。因此不同的数据库系统均可以使用相同的T-SQL语句作为数据输入与管理的接口。 以记录集合作为操作对象。所有T-SQL语句以集合作为输入,并返回集合作为输出。这种集合特性允许一条T-SQL语句的输出作为另一条T-SQL语句的输入,所以T-SQL可以嵌套,这使其具有极大的灵活性和强大的功能,在很多情况下,一条T-SQL语句就可以实现其他语言中需要大段程序才能实现的功能。 类似于人的思维习惯,容易理解和掌握。T-SQL与其他编程语言相比,要简单得多。3. T-SQL的标识符必须遵循哪些原则?答:在定义标识符时必须遵守以下规定:(1)标识符的首字符必须是下列字符之一。 统一码(Unicode)2.0标准中所定义的字母,包括拉丁字母a-z和A-Z,以及来自其他语言的字符。 下划线“_”、符号“”或者数字符号“#”。在SQL Server中,某些处于标识符开始位置的符号具有特殊意义。以“”符号开始的标识符表示局部变量或参数;以一个数字符号“#”开始的标识符表示临时表或过程,如表“#gzb”就是一张临时表;以双数字符号“#”开始的标识符表示全局临时对象,如表“#gzb”则是全局临时表。注意:某些Transact-SQL函数的名称以双at符号()开始,为避免混淆这些函数,建议不要使用以开始的名称。(2)标识符的后续字符可以是以下3种。 统一码(Unicode)2.0标准中所定义的字母。 来自拉丁字母或其他国家/地区脚本的十进制数字。 “”符号、美元符号“$”、数字符号“#”或下划线“_”。(3)标识符不允许是Transact-SQL的保留字。(4)不允许嵌入空格或其他特殊字符。例如要为明日科技公司创建一个工资管理系统,则可以将其数据库命名为“MR_GZGLXT”。名字除了要遵守命名规则以外,最好还能准确表达数据库的内容,本例中的数据库名称是以每个字的大写字母命名的,其中还使用了下划线“_”。4. T-SQL的注释方式是什么?答:注释也称注解,是程序代码中不执行的文本字符串。注释主要描述程序名称、作者名称、变量说明、代码更改日期、算法描述等。使用注释对代码进行说明,不仅能够使程序易读易懂,而且有助于日后对程序的管理与维护。在T-SQL中,可以使用两种类型的注释符: 注释符“-”用于单行注释使用双连字符 “-” 作为注释符时,从双连字符开始到行尾的内容都是注释内容。这些注释内容既可以与要执行的代码处于同一行,也可以另起一行。双连字符“-”注释方式主要用于在一行中对代码进行解释和描述。 注释符“/* */”,用于注释多行文字在正斜线星号“/*/”注释方式中,开始注释对“/*”和结束注释对“*/”之间的所有内容均视为注释。这些注释字符既可用于多行文字,也可以与执行的代码处在同一行,甚至还可以在可执行代码的内部。5. 说明变量的分类及各类变量的特点。答:在SQL中,我们常常使用临时表来存储临时结果,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,我们可以考虑使用变量,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,也可以使用变量。变量分为局部变量和全局变量。在SQL Server 2008系统中,变量的命名规则如下: 第一个字符必须是字母、数字、下画线或符号。需要注意的是,符号“”开头的变量表示局部变量、符号“”开头的变量表示全局变量。 变量名不能是T-SQL语言的系统保留字(如IF、ELSE、CONTINUE等),包括大写和小写形式。变量名中不允许出现空格或其他特殊字符6. 如何使用IFELSE和WHILE流程控制语句?答:我们经常会遇到这种情况:一个逻辑表达式的结果要么为真,要么为假。根据不同的结果,对应于不同的操作。这时就需要使用IFELSE语句在程序中对于给定条件进行判断。语法格式如下:IF 条件表达式语句体1ELSE语句体2说明: 条件表达式的运算结果应该为TRUE(真)或FALSE(假),如果条件表达式中含有SELECT语句,则必须用圆括号将SELECT语句括起来; 当条件表达式的值为TRUE时执行语句体1,然后执行IF语句之后的语句;如果条件表达式的值为FALSE,则执行ELSE关键字后面的语句体2,然后执行IF语句之后的语句;可以在IF区域或者ELSE区域嵌套另一个IF语句,对于嵌套的层数没有限制。WHILE语句是一种将同一段代码循环运行多次的方法,它可以根据一个条件表达式的结果,将代码从0次开始运行到指定次数,或者是持续运行直到遇见BREAK关键字退出循环。WHILE语句的语法格式如下: WHILE 条件表达式循环体语句的执行流程如图3-7所示。图3-7 WHILE语句的流程说明: 条件表达式的运算结果为TRUE或FALSE:当条件表达式的值为TRUE时,执行循环体中的语句,然后再次进行条件判断,重复上述操作,直至条件表达式的值为FALSE,退出循环体的执行。 循环体中可以继续使用WHILE语句,称之为循环的嵌套。可以在循环体内设置BREAK和CONTINUE关键字,以便控制循环语句的执行。7. 试述常用函数的分类及各函数的特点。答:在SQL中常用函数分为:数学函数、字符串函数和日期时间函数,它们的特点如下:数学函数可以执行对数、指数、三角函数、平方根等数学运算,并返回运算结果。对输入的字符串进行各种操作的函数称为字符串函数。与数学函数一样,字符串函数也是经常使用的函数。SQL Server 2008提供的日期时间函数不多,但非常实用。这些函数可以执行正确的DATETIME计算,并考虑闰年及其他历法的细节。在T-SQL中,可以将日期时间函数用在SELECT查询语句的选择列表或用于WHERE子句中。第7章 习题参考答案1. 简述SELECT语句的基本语法。SELECT基本语法格式为: CREAT TABLE 表名(列的名称 数据类型 NOT NULL|NULL/*指定列名称、数据类型、是否为空*/COLLATE 排序规则名称/*指定列的排序规则*/DEFAULT 默认值/*指定列的默认值*/列的约束条件,n/*指定列的约束条件*/)2. 简述SELECT语句中的FROM、WHERE、GROUP以及ORDER子句的作用。在SELECT语句中:1) FROM子句:用来指定数据来源的表;2) WHERE子句:用来限定返回行的搜索条件;3) GROUP BY子句:用来指定查询结果的分组条件;4) ORDER BY子句:用来指定结果的排序方式。3. 简述WHERE子句可以使用的搜索条件及其意义。在WHERE子句中,可以使用的查询条件有以下几种情况:1) 使用比较运算符:比较运算符来比较表达式值的大小,运算结果为TRUE或者FALSE。2) 使用逻辑运算符:使用逻辑运算符,连接WHERE子句中的多个查询条件。3) 使用LIKE模式匹配:使用LIKE模式匹配运算符,用于指出一个字符串是否与指定的字符串相匹配。4) 使用BETWEEN和IN运算符来确定范围。5) 使用NULL运算符判断一个表达式的值是否为空值。4. 举例说明什么是内连接、外连接和交叉连接?内连接是最常见的一种连接,也被称为普通连接或自然连接,它是系统默认形式,在实际使用中可以省略INNER关键字。如从student表和sc表中,查询所有不及格的学生的学号、学生姓名、所属院系、所选的课程号和成绩。T-SQL语句为:SELECT student.sno,sname,sdept,cno,grade FROM student,sc WHERE student.sno=sc.sno and grade60外连接是指连接关键字JOIN后面表中指定列连接在前一表中指定列的左边或者右边,如果两表中指定列没有匹配行,则返回空值。有左外连接、右外连接和全连接三种。如用左外连接查询student表和sc表中的学生的Sno、Cno、Sname和Grade。左外连接T-SQL语句为:SELECT student.sno,cno,sname,gradeFROM student LEFT JOIN sc ON sc.sno=student.sno交叉连接即两个表的笛卡尔积,返回结果是由第一个表的每行与第二个表的所有行组合后形成的表,因此,数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。如交叉连接student和sc两表。T-SQL语句为:SELECT * FROM studentSELECT * FROM scSELECT student.*,sc.* FROM student CROSS JOIN sc5. INSERT语句的VALUES子句中必须指明哪些信息,必须满足哪些要求?INSERT语句中的VALUES子句为列表中的各列指定值。如果省略列表,则VALUES子句需要给出插入表中每一列的值。6. 用T-SQL语句创建数据库“销售管理”,并创建其中三张数据表“商品”,“部门”和“销售”。结构如下:商品(商品号 char(6),商品名称 nchar(10),单价money)部门(部门号 char(6),部门名称nchar(10),部门经理nchar(8),电话char(12)销售(部门号 char(6),商品号 char(6),数量int,金额money)创建销售管理数据库:CREATE DATABASE 销售ON(name=销售,filename=e:database销售.mdf, size=10, maxsize=50)创建商品表:USE 销售CREATE TABLE 商品(商品号 char(6) not null,商品名称 nchar(10),单价 money)创建部门表:USE 销售CREATE TABLE 部门(部门号 char(6) not null,部门名称 nchar(10),部门经理 nchar(8)电话 char(12)创建销售表:USE 销售CREATE TABLE 销售(部门号 char(6) not null,商品号 char(6) not null,数量 int,金额 money)7. 用T-SQL语句为上一题中创建的每张表至少添加10条记录。 使用INSERT语句插入记录(略)8. 使用数据库stuinfo,进行如下操作:1) 将任课教师Daad改为Forster语句为:UPDATE course SET cteacher=NForster WHERE cteacher=NDaad2) 增加课程vc+,课程号为07,学分为6,任课教师为Emily语句为:INSERT INTO course VALUES (07,vc+,6,Emily)3) 删除学生贾新民的相关记录DELETE FROM student WHERE sname=N贾新民4) 查询所有学生的姓名及年龄SELECT sname,sage FROM student 5) 查询所有考试不及格的学生的学号、姓名和成绩SELECT sno,sname,grade FROM student,sc Where student.sno=sc.sno and grade310) 查询每个同学各门课程的平均成绩和最高成绩,按照降序排列输出学生姓名、平均成绩和最高成绩SELECT sname,AVG(grade) as 课程平均分, MAX(grade) as 课程最高分FROM student,scWHERE student.sno=sc.snoORDER BY AVG(grade) DESCGROUP BY student.sno11) 查询所有学生都选修了的课程号和课程名SELECT cno,cname FROM course WHERE NOT EXISTS(SELECT * FROM student WHERE NOT EXISTS(SELECT * FROM SC WHERE o=o and sc.sno=student.sno)第8章 习题参考答案1 在索引命令中使用关键字CLUSTERED和NONCLUSTERED分别表示将建立的是_聚集索引和非聚集_索引。2 访问数据库中的数据有两种方法,分别是:表扫描_和_索引查找_。3 索引一旦创建,将由_数据库管理系统自动管理和维护。4 在一个表上,最多可以定义_1_个聚集索引,最多可以有_多个非聚集索引。5 设有一个职员表为Customers,其上有客户姓名(Name),客户ID(ID)等列,表执行如 下语句: CREATE CLUSTERED INDEX idx ON Customers(Name)得到以下错误: Cannot create more than one clustered index原因是什么,为什么会出错?答:因为在一个表中只能创建一个聚集索引。第9章 习题参考答案1. 什么是数据的完整性?数据完整性的主要问题是什么?答:数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)、用户定义的完整性(User-definedIntegrity)。保证数据的完整性:1. 用约束而非商务规则强制数据完整性如果你按照商务规则来处理需求,那么你应当检查商务层次/用户界面:如果商务规则以后发生变化,那么只需要进行更新即可。假如需求源于维护数据完整性的需要,那么在数据库层面上需要施加限制条件。如果你在数据层确实采用了约束,你要保证有办法把更新不能通过约束检查的原因采用用户理解的语言通知用户界面。除非你的字段命名很冗长,否则字段名本身还不够。 Lamont Adams只要有可能,请采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。2. 什么是域完整性、实体完整性和引用完整性?答:实体完整性,要求表中每一条记录(每一行数据)是惟一的,即它必须至少拥有一个惟一标识以区分不同的数据行。实现方法有:主键约束PRIMARY KEY、惟一性约束UNIQUE、惟一索引UNIQUE INDEX、标识IDENTITY等 。 值域完整性,限定表中输入数据的数据类型与取值范围。实现方法:默认值约束DEFAULT或默认对象、核查约束CHECK、外键约束FOREIGN KEY、规则RULE 、数据类型、非空性约束NOT NULL等。 引用完整性,指对数据库进行添加、删除、修改数据时,要维护表间数据的一致性。实现方法:外键约束FOREIGN KEY、核查约束CHECK、触发器TRIGGER、存储过程PROCEDURE。用户定义的完整性,用于实现用户特殊要求的数据规则或格式。实现方法:默认值DEFAULT、核查约束CHECK、规则RULE 等。3. 约束的作用和类型是什么?答: 答:在SQL Server 2008中,共有6种约束:主键约束(primary key constraint)、唯一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign key constraint)和空值(NULL)约束。4. DEFAULE约束的特点是什么?答:默认约束指定在插入操作中如果没有提供输入值时,则SQL Server系统会自动为该列指定一个值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。 使用默认约束时,应该注意以下几点:每个字段只能定义一个默认约束;如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;不能为带有IDENTITY属性或者数据类型为timestamp的字段添加默认约束;如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。5. 为社么要引入CHECK约束?答:对表中的某些列创建CHECK(检查)约束是为了实施数据的域完整性约束。检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性和有效性。 使用检查约束时,应该考虑和注意以下几点:一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;一个表中可以定义多个检查约束;每个 CREATE TABLE 语句中的每个字段只能定义一个检查约束;在多个字段上定义检查约束,则必须将检查约束定义为表级约束;当执行 INSERT 语句或者 UPDATE 语句时,检查约束将验证数据。6. 主键约束的作用和创建方式是什么?答:一个表通常可以通过一个列或多个列组合的数据来唯一标识表中的每一行,这个列或列的组合就称为表上的主键。创建表中的主键是为了保证数据的实体完整性。PRIMARY KEY (主键)约束用于定义基本表的主键,它是唯一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。 创建主键的方法有两种:使用SSMS操作法和Transact-SQL 语句操作法。 使用SSMS图形化界面创建主键约束在“对象资源管理器”窗口中,展开“数据库”节点下某一具体数据库,展开“表”节点,右键单击要创建主键的表,从弹出的快捷菜单中选择“设计”命令,这时“文档”窗口中打开“表设计器”页,可对表进行进一步定义;选中表中的某列,单击鼠标右键,从弹出的快捷菜单中选择“设置主键”命令即可为表设置主键, 创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。命令格式:CREATE TABLE table_name ( column_name data_type DEFAULT default_expression | IDENTITY ( seed ,increment ) CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ,. n )7. UNIQUE约束的使用场景是什么?答:一个表只能有一个主键,若有多列或多个列组合需要实施数据惟一性,则可采用惟一约束。惟一约束与主键约束的主要区别在于:惟一约束用于非主键列,使之满足数据惟一性要求;惟一约束允许NULL值,而主键不允许;惟一约束可以在多列或多个列组合上分别设置,而主键只能在一列或一个列组合上设置。8. 外键约束的特点是什么?答:FOREIGN KEY约束是用于建立和加强两个表数据之间的链接的一列或多列。设置表中的外键约束是为了保证数据的参照完整性。SQL Server 2008中的关系保证了表之间的连接,用外键表(参照关系)中的外键引用主键表(被参照关系)中的主键。一旦创建了关系并将关系成功地加入到数据库中,就能够保证数据的参照完整性。FOREIGN KEY约束确保了同一个表或者不同表之间的引用完整性。第10章 习题参考答案1. 试说明存储过程的特点及分类存储过程是事先编好的、存储在数据库中一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。SQL Server 2008支持不同类型的存储过程:系统存储过程、扩展存储过程、用户存储过程,以满足不同的需要。2. 举例说明存储过程的定义与调用创建名为snoquery的存储过程:通过用户输入学生学号来查询学生的姓名、年龄、性别和所属院系。定义存储过程:(1)启动SSMS,展开服务器。(2)展开所需的“数据库”文件夹,展开要在其中创建存储过程的数据库。本例中,我们展开stuinfo数据库。(3)展开“可编程性”文件夹,在“存储过程”文件夹上右击鼠标,在弹出的快捷菜单中选择“新建存储过程”项。(4)系统弹出T-SQL语句编写窗口,其中的代码是创建存储过程的格式说明。我们输入以下T-SQL代码:CREATE PROCEDURE snoqueryxuehao char(10)ASSELECT sno 学号,sname 学生姓名,sage 年龄,ssex 性别,sdept 所属院系FROM studentWHERE sno=xuehao调用存储过程:代码输入结束后,只要将以上代码在“查询分析器”里执行一次,系统就会在当前数据库中创建一个名为snoquery的存储过程。点击刷新按钮,选择stuinfo数据库,在左边的树型列表中选择“存储过程”,就可以看到属于dbo(database owner)的存储过程dbo.snoquery。3. 举例说明触发器的使用创建触发器stu_delete,实现如下功能:当按照学号删除student表中的某学生记录后,对应的该学生在sc表中的记录也被自动删除。T-SQL语句为:USE stuinfoGOCREATE TRIGGER stu_Delete ON studentFOR DELETEASDELETE FROM sc WHERE sno=(SELECT sno FROM deleted)执行后,我们查询student表和sc表,如图7-6所示,可以看到两个表中均存在学号为20070102的学生记录。在student表中执行数据删除语句:DELETE FROM student WHERE sno=20070102执行结果如图7-7所示,student表中有一行受影响而sc表中有三行数据受影响。说明设定的触发器被触发,sc表中的相应数据被自动删除。第11章 习题参考答案1. 在SQL Server 2005中备份和还原的方法都有哪些?答:Microsoft SQL Server 2005提供了4种不同的备份方式:完整备份和完整差异备份、部分备份和部分差异备份、事务日志备份、数据库文件和文件组备份。2. 数据库导入导出的概念和作用是什么?答:通过导入和导出操作可以在SQL Server 2005和其他异类数据源(例如Excel或Oracle数据库)之间轻松地移动数据。例如,可以将数据从Excel应用程序导出到数据文件,然后将该数据文件导入到SQL Server表中。导出是指将数据从SQL Server表复制到数据文件中。导入是指将数据从数据文件加载到SQL Server表中。3. 分离和附加数据库时,要注意哪些事项?答:在进行分离和附加数据库操作时,首先要注意以下几点:(1) 不能进行更新,不能运行任务,用户也不能连接在数据库上。(2) 在移动数据库之前,为数据库做一个完整的备份。(3) 确保数据库要移动的目标位置及将来数据增长能有足够的空间。(4) 分离数据库并没有将其从磁盘上真正的删除。如果需要,可以对数据库的组成文件进行移动、复制或删除。4. 自动化管理任务的概念。答:作为SQL Server 2005数据库的管理员,有许多日常工作是相同或相似的,而且需要每天(或每隔一段时间)重复操作。这就使这份工作变得有些枯燥乏味。为了使管理更加方便,SQL Server 2005提供了自动化管理任务的机制,很多具有重复性的工作可以交给SQL Server 2005来自动完成。第12章 习题参考答案1. 什么是事务?简述事务ACID原则的含义。答:事务(TRANSACTION)是由对数据库的若干操作组成的一个逻辑工作单元,这些操作要么都执行,要么都不执行,是一个不可分割的整体。事务用这种方式保证数据满足并发性和完整性的要求。使用事务可以避免发生有的语句被执行,而另外一些语句没有被执行,从而造成数据不一致的情况。事务的处理必须满足4原则,即原子性(A)、一致性(C)、隔离性(I)和持久性(D),简称ACID原则: 原子性(Atomicity):事务必须是原子工作单元,事务中的操作要么全部执行,要么全部不执行,不能只完成部分操作。原子性在数据库系统中,由恢复机制来实现; 一致性(Consistency):事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。数据库一致性的定义是由用户负责的,如前面所述的银行转账,用户可以定义转账前后两个账户金额之和应该保持不变; 隔离性(Isolation):系统必须保证事务不受其他并发执行事务的影响,即当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。事务查看数据时所处的状态,要么是另一个并发事务修改它之前的状态,要么是另一个并发事务修改它之后的状态,事务不会查看中间状态的数据。隔离性通过系统的并发控制机制实现; 持久性(Durability):一个已完成的事务对数据所做的任何变动在系统中都是永久有效的,即使该事务产生的修改是不正确,错误也将一直保持。持久性通过恢复机制实现,发生故障时,可以通过日志等手段恢复数据库信息。2. 为什么要使用锁?SQL Server 2008提供了哪几种锁的模式。 答:在单用户数据库中,由于只有一个用户修改信息,不会产生数据不一致的情况,因此并不需要锁。当允许多个用户同时访问和修改数据时,就需要使用锁来防止对同一个数据的并发修改,避免产生丢失更新、脏读、不可重复读和幻读等问题。锁(lock)的基本原则是允许一个事务更新数据,当必须回滚所有修改时,能够确信在第一个事务修改完数据之后,没有其他事务在数据上进行过修改。即锁提供了事务的隔离性。事务一旦获取了锁,则在事务终止之前,将一直持有该锁。如果其他事务尝试访问数据资源的方式与该事务所持有的锁不兼容,则其他事务必须停止执行,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论