为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SQLServer2008数据库应用与开发教程(第二版)(习题解答)

2017-10-22 29页 doc 63KB 86阅读

用户头像

is_574951

暂无简介

举报
SQLServer2008数据库应用与开发教程(第二版)(习题解答)SQLServer2008数据库应用与开发教程(第二版)(习题解答) SQL Server 2008数据库应用与开发教程 (第二版) 第一章 习题参考答案 1. 简述SQL Server 2008系统中主要数据库对象的特点。 答:主要的数据库对象包括数据库关系图、表、视图、同义词、存储过程、函数、触发器、程序集、类型、规则和默认值等。 “表”节点中包含了数据库最基本、最重要的对象——表。表实际用来存储系统数据和用户数据,是最核心的数据库对象。 “视图”节点包含了数据库中的视图对象。视图是一种虚拟表,用来查看数据库中...
SQLServer2008数据库应用与开发教程(第二版)(习题解答)
SQLServer2008数据库应用与开发教程(第二版)(习题解答) SQL Server 2008数据库应用与开发教程 (第二版) 第一章 习题参考 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)是一个数据集成平台,负责完成有关数据的提取、转换和加载等操作。 SQL Server 2008数据库应用与开发教程(第二版) 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. 熟悉查询分析器的功能与使用。(略) 第二章习题参考答案 1. 在Microsoft SQL Server 2008 中,主数据文件的后缀是_.mdf______,日志数据文件的后缀是__.ldf______。 2. 在创建数据库时,系统自动将_master___系统数据库的所有用户定义的对象复制到新建的数据库。 SQL Server 2008数据库应用与开发教程(第二版) 3. 每个文件组可以有__多__个日志文件。 4. 使用T-SQL语句创建数据库的语句是:CREATE DATABASE;创建表的语句是:CREATE TABLE 第三章习题参考答案 1. 在一个表上可以定义__多_个CHECK约束。 2. 创建表的语句是:_CREATE TABLE 表名___________。 3. 表和表之间的关系是通过__连接实现的。 4. 删除表“employ”中的“employdate”列所使用的语句是什么, 答: ALTER TABLE employ ( DROP employdate ) 5. 为表“employ”删除主键约束的语句是怎样的, 答: ALTER TABLE employ ( DROP CONSTRAINT 约束名 PRIMARY KEY ) 第四章习题参考答案 1. 在SQL Server 2008中对数据使用SSMS图形化界面进行修改,与使用T-SQL修改数 据,两种方法相比较,哪一种功能更强大、更为灵活,试举例说明。 答:使用T-SQL修改数据功能更强大,更为灵活。 2. 向附录A 学生成绩(XSCJ)数据库的表中送入或修改成样本数据。(略) 3. 写出T-SQL语句,对产品销售数据库(库名CPXS)产品表进行如下操作: (1) 插入如下记录 0001 空调 3000 200 0203 冰箱 2500 100 0301 彩电 2800 50 答:语句如下: insert into 产品表Values('0001','空调3000','200'); insert into 产品表Values('0203','冰箱2500','100'); insert into 产品表Values('0301','彩电2800','50'); SQL Server 2008数据库应用与开发教程(第二版) (2) 将产品数据库的产品表中的每种商品的价格打8折。 语句如下: update 产品表SET 价格=价格*0.8 (3) 将产品数据库的产品表中价格打8折后小于50的商品删除。 DELETE FROM 产品表 WHERE 价格<50 第五章习题参考答案 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中,所有的数据库对象都隶属于架构,在对数据库对象或者对其存在于数据库应用程序中的相应引用没有任何影响的情况下,可以更改并删除数据库用户。这种抽象的方法允许用户创建一个由数据库角色拥有的架构,以使多个数据库用户拥有 SQL Server 2008数据库应用与开发教程(第二版) 相同的对象。 5. 如何管理SQL Server 2008的权限层次结构, 答:对数据的访问是通过SQL Server 2008的权限层次结构进行管理的。可以使用GRANT、DENY和REVOKE语句来管理这个权限层次结构。 ? GRANT:允许一个数据库用户或角色执行所授权限指定的操作。 ? DENY:拒绝一个数据库用户或角色的特定权限,并且阻止它们从其他角色中继承 这个权限。 ? REVOKE:取消先前被授予或拒绝的权限。 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语句中,用户只需指出“做什么”,而不需要指出系统“如 SQL Server 2008数据库应用与开发教程(第二版) 何做”,语句具体的操作过程由系统自动完成。因此不同的数据库系统均可以使用相 同的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中,可以使用两种类型的注释符: ? 注释符“--”用于单行注释 使用双连字符 “--” 作为注释符时,从双连字符开始到行尾的内容都是注释内容。这些注释内容既可以与要执行的代码处于同一行,也可以另起一行。双连字符“--”注释方式主要 SQL Server 2008数据库应用与开发教程(第二版) 用于在一行中对代码进行解释和描述。 ? 注释符“/* */”,用于注释多行文字 在正斜线星号“/*…*/”注释方式中,开始注释对“/*”和结束注释对“*/”之间的所有内容均视为注释。这些注释字符既可用于多行文字,也可以与执行的代码处在同一行,甚至还可以在可执行代码的内部。 5. 说明变量的分类及各类变量的特点。 SQL答:在中,我们常常使用临时表来存储临时结果,但当结果仅仅是一个数据或者是几个 SQL数据时,还要去建一个表,显得就比较麻烦,我们可以考虑使用变量,另外,当一个语句中的某些元素经常变化时,比如选择条件,也可以使用变量。变量分为局部变量和全局变 SQL Server 2008 量。在系统中,变量的命名规则如下: ? 第一个字符必须是字母、数字、下画线或@符号。需要注意的是,符号“@”开头 的变量表示局部变量、符号“@@”开头的变量表示全局变量。 ? 变量名不能是T-SQL语言的系统保留字(如IF、ELSE、CONTINUE等),包括大写 和小写形式。 变量名中不允许出现空格或其他特殊字符 6. 如何使用IF…ELSE和WHILE流程控制语句, 答:我们经常会遇到这种情况:一个逻辑表达式的结果要么为真,要么为假。根据不同的结果,对应于不同的操作。这时就需要使用IF„ELSE语句在程序中对于给定条件进行判断。 语法格式如下: IF 条件表达式 {语句体1} [ELSE {语句体2}] 说明: ? 条件表达式的运算结果应该为TRUE(真)或FALSE(假),如果条件表达式中含有 SELECT语句,则必须用圆括号将SELECT语句括起来; ? 当条件表达式的值为TRUE时执行语句体1,然后执行IF语句之后的语句;如果条件 表达式的值为FALSE,则执行ELSE关键字后面的语句体2,然后执行IF语句之后的 语句; 可以在IF区域或者ELSE区域嵌套另一个IF语句,对于嵌套的层数没有限制。 WHILE语句是一种将同一段代码循环运行多次的方法,它可以根据一个条件表达式的结果,将代码从0次开始运行到指定次数,或者是持续运行直到遇见BREAK关键字退出循环。 WHILE语句的语法格式如下: SQL Server 2008数据库应用与开发教程(第二版) WHILE 条件表达式 循环体 语句的执行流程如图3-7所示。 条件表达式 N Y 退出循环,执行下一条语句 循环体 图3-7 WHILE语句的流程 说明: ? 条件表达式的运算结果为TRUE或FALSE:当条件表达式的值为TRUE时,执行循 环体中的语句,然后再次进行条件判断,重复上述操作,直至条件表达式的值为 FALSE,退出循环体的执行。 ? 循环体中可以继续使用WHILE语句,称之为循环的嵌套。 可以在循环体内设置BREAK和CONTINUE关键字,以便控制循环语句的执行。 7. 试述常用函数的分类及各函数的特点。 答:在SQL中常用函数分为:数学函数、字符串函数和日期时间函数,它们的特点如下: 数学函数可以执行对数、指数、三角函数、平方根等数学运算,并返回运算结果。 对输入的字符串进行各种操作的函数称为字符串函数。与数学函数一样,字符串函数也是经常使用的函数。 SQL Server 2008提供的日期时间函数不多,但非常实用。这些函数可以执行正确的DATETIME计算,并考虑闰年及其他历法的细节。在T-SQL中,可以将日期时间函数用在SELECT查询语句的选择列表或用于WHERE子句中。 第七章习题参考答案 1. 简述SELECT语句的基本语法。 SELECT基本语法格式为: CREAT TABLE 表名 ( SQL Server 2008数据库应用与开发教程(第二版) 列的名称 数据类型 [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 grade<60 外连接是指连接关键字JOIN后面表中指定列连接在前一表中指定列的左边或者右边,如果两表中指定列没有匹配行,则返回空值。有左外连接、右外连接和全连接三种。如用左外连接查询student表和sc表中的学生的Sno、Cno、Sname和Grade。 左外连接T-SQL语句为: SELECT student.sno,cno,sname,grade FROM student LEFT JOIN sc ON sc.sno=student.sno SQL Server 2008数据库应用与开发教程(第二版) 交叉连接即两个表的笛卡尔积,返回结果是由第一个表的每行与第二个表的所有行组合后形成的表,因此,数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。如交叉连接student和sc两表。 T-SQL语句为: SELECT * FROM student SELECT * FROM sc SELECT student.*,sc.* FROM student CROSS JOIN sc 5. 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)) SQL Server 2008数据库应用与开发教程(第二版) 创建销售表: 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=N'Forster' WHERE cteacher=N'Daad' 2) 增加课程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 grade<60 6) 查询年龄在20-22岁之间的学生姓名、年龄、所属院系和政治面貌 SELECT sname,age,sdept,spolicitalstatus FROM student WHERE sage between 20 and 22 7) 查询所有姓李的学生的学号、姓名和性别 SELECT sno,sname,ssex FROM student WHERE sname like N'李%' 8) 查询名字中第2个字为“华”字的女学生的姓名、年龄和所属院系 SELECT sname,sage,sdept FROM student WHERE sname like N'_华' 9) 查询所有选了3门课以上的学生的学号、姓名、所选课程名称及成绩 SELECT student.sno,sname,cname,grade FROM student,course,sc WHERE student.sno=sc.sno and course.cno=sc.cno GROUP BY sc.sno HAVING COUNT(*)>3 10) 查询每个同学各门课程的平均成绩和最高成绩,按照降序排列输出学生姓名、 平均成绩和最高成绩 SQL Server 2008数据库应用与开发教程(第二版) SELECT sname,AVG(grade) as '课程平均分', MAX(grade) as '课程最高分' FROM student,sc WHERE student.sno=sc.sno ORDER BY AVG(grade) DESC GROUP BY student.sno 11) 查询所有学生都选修了的课程号和课程名 SELECT cno,cname FROM course WHERE NOT EXISTS( SELECT * FROM student WHERE NOT EXISTS( SELECT * FROM SC WHERE sc.cno=course.cno and sc.sno=student.sno)) 第八章习题参考答案 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 原因是什么,为什么会出错? 答:因为在一个表中只能创建一个聚集索引。 第九章习题参考答案 1. 什么是数据的完整性,数据完整性的主要问题是什么, 答: 数据完整性(Data Integrity)是 指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:实体完整性(Entity Integrity)、域完整 性(Domain Integrity)、参照完整性(Referential Integrity)、用户定义的完整性(User-definedIntegrity)。 保证数据的完整性: 1. 用约束而非商务规则强制数据完整性 如果你按照商务规则来处理需求,那么你应当检查商务层次/用户界面:如果商务规则以后发生变化,那么只需要进行更新即可。 假如需求源于维护数据完整性的需要,那么在数据库层面上需要施加限制条件。 如果你在数据层确实采用了约束,你要保证有办法把更新不能通过约束检查的原因采用用户理解的语言通知用户界面。除非你的字段命名很冗长,否则字段名本身还不够。 — SQL Server 2008数据库应用与开发教程(第二版) 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. 主键约束的作用和创建方式是什么, SQL Server 2008数据库应用与开发教程(第二版) 答:一个表通常可以通过一个列或多个列组合的数据来唯一标识表中的每一行,这个列或列的组合就称为表上的主键。创建表中的主键是为了保证数据的实体完整性。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约束确保了同一个表或者不同表之间的引用完整性。 第十章习题参考答案 1. 试说明存储过程的特点及分类 存储过程是事先编好的、存储在数据库中一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。 SQL Server 2008支持不同类型的存储过程:系统存储过程、扩展存储过程、用户存储过程,以满足不同的需要。 SQL Server 2008数据库应用与开发教程(第二版) 2. 举例说明存储过程的定义与调用 创建名为snoquery的存储过程:通过用户输入学生学号来查询学生的姓名、年龄、性别和所属院系。 定义存储过程: (1)启动SSMS,展开服务器。 (2)展开所需的“数据库”文件夹,展开要在其中创建存储过程的数据库。本例中,我们展开stuinfo数据库。 (3)展开“可编程性”文件夹,在“存储过程”文件夹上右击鼠标,在弹出的快捷菜单中选择“新建存储过程”项。 (4)系统弹出T-SQL语句编写窗口,其中的代码是创建存储过程的格式说明。我们输入以下T-SQL代码: CREATE PROCEDURE snoquery @xuehao char(10) AS SELECT sno 学号,sname 学生姓名,sage 年龄,ssex 性别,sdept 所属院系 FROM student WHERE sno=@xuehao 调用存储过程: 代码输入结束后,只要将以上代码在“查询分析器”里执行一次,系统就会在当前数据库中创建一个名为snoquery的存储过程。点击刷新按钮,选择stuinfo数据库,在左边的树型列表中选择“存储过程”,就可以看到属于dbo(database owner)的存储过程dbo.snoquery。 3. 举例说明触发器的使用 创建触发器stu_delete,实现如下功能:当按照学号删除student表中的某学生记录后,对应的该学生在sc表中的记录也被自动删除。 T-SQL语句为: USE stuinfo GO CREATE TRIGGER stu_Delete ON student FOR DELETE AS DELETE FROM sc WHERE sno=(SELECT sno FROM deleted) 执行后,我们查询student表和sc表,如图7-6所示,可以看到两个表中均存在学号为20070102的学生记录。 在student表中执行数据删除语句: DELETE FROM student WHERE sno='20070102' 执行结果如图7-7所示,student表中有一行受影响而sc表中有三行数据受影响。说明设定 SQL Server 2008数据库应用与开发教程(第二版) 的触发器被触发,sc表中的相应数据被自动删除。 第十一章习题参考答案 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来自动完成。 第十二章习题参考答案 1. 什么是事务,简述事务ACID原则的含义。 答:事务(TRANSACTION)是由对数据库的若干操作组成的一个逻辑工作单元,这些操作要么都执行,要么都不执行,是一个不可分割的整体。事务用这种方式保证数据满足并发性和完整性的要求。使用事务可以避免发生有的语句被执行,而另外一些语句没有被执行,从而造成数据不一致的情况。 事务的处理必须满足4原则,即原子性(A)、一致性(C)、隔离性(I)和持久性(D),简称ACID SQL Server 2008数据库应用与开发教程(第二版) 原则: ? 原子性(Atomicity):事务必须是原子工作单元,事务中的操作要么全部执行,要么全 部不执行,不能只完成部分操作。原子性在数据库系统中,由恢复机制来实现; ? 一致性(Consistency):事务开始前,数据库处于一致性的状态;事务结束后,数据库 必须仍处于一致性状态。数据库一致性的定义是由用户负责的,如前面所述的银行 转账,用户可以定义转账前后两个账户金额之和应该保持不变; ? 隔离性(Isolation):系统必须保证事务不受其他并发执行事务的影响,即当多个事务 同时运行时,各事务之间相互隔离,不可互相干扰。事务查看数据时所处的状态, 要么是另一个并发事务修改它之前的状态,要么是另一个并发事务修改它之后的状 态,事务不会查看中间状态的数据。隔离性通过系统的并发控制机制实现; ? 持久性(Durability):一个已完成的事务对数据所做的任何变动在系统中都是永久有效 的,即使该事务产生的修改是不正确,错误也将一直保持。持久性通过恢复机制实 现,发生故障时,可以通过日志等手段恢复数据库信息。 2. 为什么要使用锁,SQL Server 2008提供了哪几种锁的模式。 答:在单用户数据库中,由于只有一个用户修改信息,不会产生数据不一致的情况,因此并不需要锁。当允许多个用户同时访问和修改数据时,就需要使用锁来防止对同一个数据的并发修改,避免产生丢失更新、脏读、不可重复读和幻读等问题。 锁(lock)的基本原则是允许一个事务更新数据,当必须回滚所有修改时,能够确信在第一个事务修改完数据之后,没有其他事务在数据上进行过修改。即锁提供了事务的隔离性。 事务一旦获取了锁,则在事务终止之前,将一直持有该锁。如果其他事务尝试访问数据资源的方式与该事务所持有的锁不兼容,则其他事务必须停止执行,直到拥有锁的事务终止、不兼容的锁被释放,才可以使用解锁的数据资源。在SQL Server 2008中,系统能够自动处理锁的行为。 共有6种锁,分别是:共享锁、更新锁、排他锁、意向锁、架构锁和大容量更新锁。 3. 什么是死锁,如何预防死锁,怎么解决死锁, 答:死锁就是两个事务各对一个资源加锁,都想使用对方的资源,但同时又不愿放弃自己的资源,于是一直等待对方放弃资源。如果不进行外部干涉,死锁将一直持续。死锁会造成资源的大量浪费,甚至会使系统崩溃。 解决死锁最好的方法就是防止死锁的发生,即不让满足死锁条件的情况发生。为此,用户需要遵循以下原则: (1) 尽量避免并发地执行涉及到修改数据的语句; (2) 要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行; (3) 预先规定一个加锁顺序。所有的事务,都必须按这个顺序对数据进行加锁。例如,不同的过程在事务内部对对象的更新执行顺序应尽量保持一致; (4) 每个事务的执行时间不可太长,尽量缩短事务的逻辑处理过程,及早提交或回滚事务。 SQL Server 2008数据库应用与开发教程(第二版) 对程序段长的事务可考虑将其分割为几个事务; (5) 一般不要修改SQL Server事务的默认级别。不推荐强行加锁。 4. CREATE PARTITION FUNCTION命令的RANGE 子句定义了什么, 答:定义了边界值,一个用于第一个边界值之前的任何值;一个用于第一个和第二个边界值之间的值;一个用于第二个和第三个边界值之间的值;还有一个用于边界值之外的任何值。 5. CREATE PARTITION FUNCTION命令的VALUE 子句定义了什么, values 答:后面为要插入的值。 6. CREATE PARTITION SCHEME命令定义了什么, 答:定义了架构 7. 哪个子句用来分区一个表或索引, 答:利用原表重建分区表。 CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE); 如果表已创建。用下面子句就可以完成 INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS; 8. 哪3个操作可以用来管理分区,每个操作的目的又是什么, 答:1. 切换分区:使用ALTER TABLE 语句的SWITCH 子句可以将已填充的表或分区与空的表或分区进行交换。 2. 合并分区:使用ALTER PARTITION FUNCTION 语句可以合并分区。执行合并操作时,在该语句中,指定了边界值的分区将被删除,并且该数据合并到相邻的分区中。 3. 拆分分区:拆分分区也使用ALTER PARTITION FUNCTION 语句。拆分分区将创建新分区,并相应的重新分配数据。新的分区创建在基于分区函数的每一个分区中指定为下一个文件组的文件组中。 9. 哪个运算符可用来在表之间移动分区, 答:SPLIT运算符 10. SQL Server Integration Services(SSIS)有3种不同类型的控制流组件:容器、_任务_和_优先 约束。 11. SQL Server Integration Services(SSIS)有4种不同类型的数据流组件:提取数据的源、修改和聚合数据的转换、加载数据的目标以及将数据流组件的输出和输入连接为数据流的路径。 SQL Server 2008数据库应用与开发教程(第二版) 12. 简述什么是OLAP。 答:SQL Server 2008分析服务(Microsoft SQLServer Analysis Services,SSAS)是微软SQL Server 2008中的多维联机分析处理(Online Analytical Processing,OLAP)组件,它在商业智能(Business Intelligence,BI)分析方案中集成关系型和OLAP数据。分析服务允许开发人员设计、创建和管理包含从其他数据源(如关系数据库)聚合的数据的多维结构,以实现对OLAP的支持。对于数据挖掘应用程序,分析服务允许开发人员设计、创建和可视化处理那些通过使用行业标准数据挖掘算法,并根据其他数据源构造出来的数据挖掘模型。商业智能(BI)、数据仓库、分析服务的关系。
/
本文档为【SQLServer2008数据库应用与开发教程&#40;第二版&#41;&#40;习题解答&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索