admin 管理员组文章数量: 1087135
2024年4月17日发(作者:stackingclassification)
sql-server-2008-数据库应用
与开发教程--课后习题参考答
案
D
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)是一个数据集成平台,负责完成有
关数据的提取、转换和加载等操作。
1. 安装SQL Server 2008之前应该做什么准备
SQL Server 2008数据库应用与开发教程(第二版)
工作?
答:(1) 增强物理安全性
(2) 使用防火墙
(3) 隔离服务
(4) 禁用NetBIOS和服务器消息块
2. SQL Server 2008支持哪两种身份验证?
答:Windows 身份验证或混合模式身份验证。
3. 如何注册和启动SQL Server 服务器?
答:1. 注册服务器
使用Microsoft SQL Server Management
Studio工具注册服务器的步骤如下:
(1) 启动Microsoft SQL Server Management
Studio工具,选择“视图”|“已注册”命令
或者按下快捷键Ctrl+Alt+G,在打开的“已
注册的服务器”窗口中选中“数据库引擎”图
标。
(2) 在“数据库引擎”上单击鼠标右键,从弹
SQL Server 2008数据库应用与开发教程(第二版)
出的快捷菜单中选择“新建”|“服务器注册”
命令,即可打开如图1-20所示的“新建服务器
注册”对话框。选择“常规”选项卡,可以在
该选项卡中输入将要注册的服务器名称。
(3) 选择“连接属性”选项卡,如图1-21所示,
在该选项卡中可以设置连接到的数据库、网络
以及其他连接属性。
(4) 然后单击“测试”按钮,可以对当前设置
的连接属性进行测试。如果出现如图1-23所
示的“新建服务器注册”消息框,则表示连接
属性的设置是正确的。
(5) 完成连接属性设置后,单击“保存”按钮,
即可完成连接属性的设置操作。接着单击“保
存”按钮,即可完成新建服务器注册的操作。
新注册的服务器名称将出现在列表中。
2. 启动服务器
可以通过“开始”菜单来启动SQL Server
Configuration Manager,
SQL Server 2008数据库应用与开发教程(第二版)
7. 熟悉查询分析器的功能与使用。(略)
第二章习题参考答案
1. 在Microsoft SQL Server 2008 中,主数据文
件的后缀是_.mdf______,日志数据文件的后缀
是__.ldf______。
2. 在创建数据库时,系统自动将_master___系
统数据库的所有用户定义的对象复制到新建的
数据库。
3. 每个文件组可以有__多__个日志文件。
4. 使用T-SQL语句创建数据库的语句是:
CREATE DATABASE;创建表的语句是:
CREATE TABLE
SQL Server 2008数据库应用与开发教程(第二版)
第三章习题参考答案
1. 在一个表上可以定义__多_个CHECK约束。
2. 创建表的语句是:_CREATE TABLE 表名
___________。
3. 表和表之间的关系是通过__连接 实现的。
4. 删除表“employ”中的“employdate”列所
使用的语句是什么?
答: ALTER TABLE employ
( DROP employdate
)
5. 为表“employ”删除主键约束的语句是怎样
的?
答: ALTER TABLE employ
(
DROP CONSTRAINT 约束名
PRIMARY KEY
)
SQL Server 2008数据库应用与开发教程(第二版)
第四章习题参考答案
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','冰箱
SQL Server 2008数据库应用与开发教程(第二版)
2500','100');
insert into 产品表Values('0301','彩电
2800','50');
(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个层次提供安全控制。下面分别对每个层
SQL Server 2008数据库应用与开发教程(第二版)
次进行简介。
(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支持两种身份验证模式:
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. 管理对可编程对象的访问主要涉及哪些可
编程对象?
答:可编程对象,如存储过程及用户定义的函
SQL Server 2008数据库应用与开发教程(第二版)
数,具有自己的安全上下文。数据库用户需要
获得授权以执行存储过程、函数和程序集。一
旦数据库引擎检查了执行可编程对象的权限,
就会在可编程对象内部对其所执行的操作进行
权限检查。当数据库对象按顺序相互访问时,
该访问顺序将形成一个所有权链。
第六章习题参考答案
1. T-SQL和SQL的关系是什么?
答:SQL全称是“结构化查询语言
(Structured Query
Language)”SQL(Structured Query Language)
是一种数据库查询和程序设计语言,用于存取
数据以及查询、更新和管理关系数据库系统。
T-SQL是标准 SQL 程式设计语言的增强版,
它是用来让应用程式与 SQL Server 沟通的主
要语言。T-SQL 提供标准 SQL的DDL 和
DML 功能,加上延伸的函数、系统预存程序
以及程式设计结构(例如 IF 和 WHILE)让程
SQL Server 2008数据库应用与开发教程(第二版)
式设计更有弹性。可以理解成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可以嵌套,这使其具有极大的灵活
性和强大的功能,在很多情况下,一条
SQL Server 2008数据库应用与开发教程(第二版)
T-SQL语句就可以实现其他语言中需要大
段程序才能实现的功能。
类似于人的思维习惯,容易理解和掌
握。T-SQL与其他编程语言相比,要简单得多。
3. T-SQL的标识符必须遵循哪些原则?
答:在定义标识符时必须遵守以下规定:
(1)标识符的首字符必须是下列字符之一。
统一码(Unicode)2.0标准中所定义的字母,
包括拉丁字母a-z和A-Z,以及来自其他语言
的字符。
下划线“_”、符号“@”或者数字符号“#”。
在SQL Server中,某些处于标识符开始位置
的符号具有特殊意义。以“@”符号开始的标
识符表示局部变量或参数;以一个数字符号“#”
开始的标识符表示临时表或过程,如表“#gzb”
就是一张临时表;以双数字符号“##”开始的
标识符表示全局临时对象,如表“##gzb”则是
全局临时表。
注意:某些Transact-SQL函数的名称以双at
SQL Server 2008数据库应用与开发教程(第二版)
符号(@@)开始,为避免混淆这些函数,建议
不要使用以@@开始的名称。
(2)标识符的后续字符可以是以下3种。
统一码(Unicode)2.0标准中所定义的字母。
来自拉丁字母或其他国家/地区脚本的十进
制数字。
“@”符号、美元符号“$”、数字符号“#”
或下划线“_”。
(3)标识符不允许是Transact-SQL的保留
字。
(4)不允许嵌入空格或其他特殊字符。
例如要为明日科技公司创建一个工资管理系
统,则可以将其数据库命名为
“MR_GZGLXT”。名字除了要遵守命名规则
以外,最好还能准确表达数据库的内容,本例
中的数据库名称是以每个字的大写字母命名
的,其中还使用了下划线“_”。
4. T-SQL的注释方式是什么?
SQL Server 2008数据库应用与开发教程(第二版)
答:注释也称注解,是程序代码中不执行的文
本字符串。注释主要描述程序名称、作者名称、
变量说明、代码更改日期、算法描述等。使用
注释对代码进行说明,不仅能够使程序易读易
懂,而且有助于日后对程序的管理与维护。
在T-SQL中,可以使用两种类型的注释符:
● 注释符“--”用于单行注释
使用双连字符 “--” 作为注释符时,从双连
字符开始到行尾的内容都是注释内容。这些注
释内容既可以与要执行的代码处于同一行,也
可以另起一行。双连字符“--”注释方式主要
用于在一行中对代码进行解释和描述。
● 注释符“/* */”,用于注释多行文字
在正斜线星号“/*…*/”注释方式中,开始注
释对“/*”和结束注释对“*/”之间的所有内
容均视为注释。这些注释字符既可用于多行文
字,也可以与执行的代码处在同一行,甚至还
可以在可执行代码的内部。
5. 说明变量的分类及各类变量的特点。
SQL Server 2008数据库应用与开发教程(第二版)
答:在
SQL
中,我们常常使用临时表来存储
临时结果,但当结果仅仅是一个数据或者是几
个数据时,还要去建一个表,显得就比较麻烦,
我们可以考虑使用变量,另外,当一个
SQL
语句中的某些元素经常变化时,比如选择条件,
也可以使用变量。变量分为局部变量和全局变
量。在
SQL Server 2008
系统中,变量的命名规
则如下:
● 第一个字符必须是字母、数字、下画线或
@符号。需要注意的是,符号“@”开头
的变量表示局部变量、符号“@@”开头
的变量表示全局变量。
● 变量名不能是T-SQL语言的系统保留字
(如IF、ELSE、CONTINUE等),包括大
写和小写形式。
变量名中不允许出现空格或其他特殊字符
6. 如何使用IF…ELSE和WHILE流程控制语
句?
答:我们经常会遇到这种情况:一个逻辑表达
式的结果要么为真,要么为假。根据不同的结
果,对应于不同的操作。这时就需要使用IF…
SQL Server 2008数据库应用与开发教程(第二版)
ELSE语句在程序中对于给定条件进行判断。
语法格式如下:
IF 条件表达式
{语句体1}
[ELSE
{语句体2}]
说明:
● 条件表达式的运算结果应该为TRUE(真)
或FALSE(假),如果条件表达式中含有
SELECT语句,则必须用圆括号将
SELECT语句括起来;
● 当条件表达式的值为TRUE时执行语句体
1,然后执行IF语句之后的语句;如果条
件表达式的值为FALSE,则执行ELSE关
键字后面的语句体2,然后执行IF语句之
后的语句;
可以在IF区域或者ELSE区域嵌套另一个IF
语句,对于嵌套的层数没有限制。
WHILE语句是一种将同一段代码循环运行多
次的方法,它可以根据一个条件表达式的结果,
将代码从0次开始运行到指定次数,或者是持
续运行直到遇见BREAK关键字退出循环。
WHILE语句的语法格式如下:
WHILE 条件表达式
循环体
SQL Server 2008数据库应用与开发教程(第二版)
语句的执行流程如图3-7所示。
条件表达式
N
Y
循环体
退出循环,执行下一条语句
图3-7 WHILE语句的流程
说明:
● 条件表达式的运算结果为TRUE或
FALSE:当条件表达式的值为TRUE时,
执行循环体中的语句,然后再次进行条件
判断,重复上述操作,直至条件表达式的
值为FALSE,退出循环体的执行。
● 循环体中可以继续使用WHILE语句,称
之为循环的嵌套。
可以在循环体内设置BREAK和CONTINUE
关键字,以便控制循环语句的执行。
7. 试述常用函数的分类及各函数的特点。
答:在SQL中常用函数分为:数学函数、字
符串函数和日期时间函数,它们的特点如下:
数学函数可以执行对数、指数、三角函数、平
SQL Server 2008数据库应用与开发教程(第二版)
方根等数学运算,并返回运算结果。
对输入的字符串进行各种操作的函数称为字符
串函数。与数学函数一样,字符串函数也是经
常使用的函数。
SQL Server 2008提供的日期时间函数不多,但
非常实用。这些函数可以执行正确的
DATETIME计算,并考虑闰年及其他历法的细
节。在T-SQL中,可以将日期时间函数用在
SELECT查询语句的选择列表或用于WHERE
子句中。
第七章习题参考答案
1. 简述SELECT语句的基本语法。
SELECT基本语法格式为:
CREAT TABLE 表名
(
列的名称 数据类型 [NOT NULL|NULL]
SQL Server 2008数据库应用与开发教程(第二版)
/*指定列名称、数据类型、是否为空*/
[COLLATE 排序规则名称] /*指
定列的排序规则*/
[DEFAULT 默认值] /*指定列
的默认值*/
[列的约束条件][,…n] /*指定
列的约束条件*/
)
2. 简述SELECT语句中的FROM、WHERE、
GROUP以及ORDER子句的作用。
在SELECT语句中:
1) FROM子句:用来指定数据来源的表;
2) WHERE子句:用来限定返回行的搜索条
件;
3) GROUP BY子句:用来指定查询结果的
分组条件;
4) ORDER BY子句:用来指定结果的排序
方式。
SQL Server 2008数据库应用与开发教程(第二版)
3. 简述WHERE子句可以使用的搜索条件及
其意义。
在WHERE子句中,可以使用的查询条件有以
下几种情况:
1) 使用比较运算符:比较运算符来比较表达
式值的大小,运算结果为TRUE或者
FALSE。
2) 使用逻辑运算符:使用逻辑运算符,连接
WHERE子句中的多个查询条件。
3) 使用LIKE模式匹配:使用LIKE模式匹
配运算符,用于指出一个字符串是否与指
定的字符串相匹配。
4) 使用BETWEEN和IN运算符来确定范
围。
5) 使用NULL运算符判断一个表达式的值
是否为空值。
SQL Server 2008数据库应用与开发教程(第二版)
4. 举例说明什么是内连接、外连接和交叉连
接?
内连接是最常见的一种连接,也被称为普通连
接或自然连接,它是系统默认形式,在实际使
用中可以省略INNER关键字。如从student
表和sc表中,查询所有不及格的学生的学号、
学生姓名、所属院系、所选的课程号和成绩。
T-SQL语句为:
SELECT ,sname,sdept,cno,grade
FROM student,sc
WHERE = and grade<60
外连接是指连接关键字JOIN后面表中指定列
连接在前一表中指定列的左边或者右边,如果
两表中指定列没有匹配行,则返回空值。有左
外连接、右外连接和全连接三种。如用左外连
接查询student表和sc表中的学生的Sno、Cno、
Sname和Grade。
左外连接T-SQL语句为:
SELECT ,cno,sname,grade
FROM student LEFT JOIN sc ON =
交叉连接即两个表的笛卡尔积,返回结果是由
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),
SQL Server 2008数据库应用与开发教程(第二版)
单价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,
SQL Server 2008数据库应用与开发教程(第二版)
商品号 char(6) not null,
数量 int,
金额 money)
7. 用T-SQL语句为上一题中创建的每张表至
少添加10条记录。
使用INSERT语句插入记录(略)
8. 使用数据库stuinfo,进行如下操作:
1) 将任课教师Daad改为Forster
2) 增加课程vc++,课程号为07,学分为6,
UPDATE course SET cteacher=N'Forster' WHERE cteacher=N'Daad'
语句为:
任课教师为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 = and grade<60
SQL Server 2008数据库应用与开发教程(第二版)
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 ,sname,cname,grade FROM student,course,sc
WHERE = and =
GROUP BY HAVING COUNT(*)>3
10) 查询每个同学各门课程的平均成绩和
最高成绩,按照降序排列输出学生姓名、
平均成绩和最高成绩
SELECT sname,AVG(grade) as '课程平均分', MAX(grade) as '课程最高分'
FROM student,sc
WHERE =
11) 查询所有学生都选修了的课程号和课
GROUP BY
ORDER BY AVG(grade) DESC
程名
SQL Server 2008数据库应用与开发教程(第二版)
SELECT cno,cname FROM course WHERE NOT EXISTS(
SELECT * FROM student WHERE NOT EXISTS(
SELECT * FROM SC WHERE = and =))
第八章习题参考答案
1.在索引命令中使用关键字
CLUSTERED和NONCLUSTERED分别表示
将建立的是_聚集索引和非聚集_索引。
2.访问数据库中的数据有两种方法,分别
是:表扫描________和__索引查找_______。
3.索引一旦创建,将由_数据库管理系统
自动管理和维护。
4.在一个表上,最多可以定义_1___个聚
集索引,最多可以有_多个非聚集索引。
5.设有一个职员表为Customers,其上有
客户姓名(Name),客户ID(ID)等列,表执行如
下语句:
CREATE CLUSTERED INDEX idx
ON Customers(Name)
得到以下错误:
SQL Server 2008数据库应用与开发教程(第二版)
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. 什么是域完整性、实体完整性和引用完整
性?
答:实体完整性,要求表中每一条记录(每一
SQL Server 2008数据库应用与开发教程(第二版)
行数据)是惟一的,即它必须至少拥有一个惟
一标识以区分不同的数据行。实现方法有:主
键约束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种约
SQL Server 2008数据库应用与开发教程(第二版)
束:主键约束(primary key constraint)、唯一性
约束(unique constraint)、检查约束(check
constraint)、默认约束(default constraint)、外
部键约束(foreign key constraint)和空值
(NULL)约束。
4. DEFAULE约束的特点是什么?
答:默认约束指定在插入操作中如果没有提供
输入值时,则SQL Server系统会自动为该列
指定一个值。默认约束可以包括常量、函数、
不带变元的内建函数或者空值。
使用默认约束时,应该注意以下几点:每个字
段只能定义一个默认约束;如果定义的默认值
长于其对应字段的允许长度,那么输入到表中
的默认值将被截断;不能为带有IDENTITY属
性或者数据类型为timestamp的字段添加默认
约束;如果字段定义为用户定义的数据类型,
而且有一个默认绑定到这个数据类型上,则不
允许该字段有默认约束。
SQL Server 2008数据库应用与开发教程(第二版)
5. 为社么要引入CHECK约束?
答:对表中的某些列创建CHECK(检查)约束
是为了实施数据的域完整性约束。检查约束对
输入列或者整个表中的值设置检查条件,以限
制输入值,保证数据库数据的完整性和有效性。
使用检查约束时,应该考虑和注意以下几点:
一个列级检查约束只能与限制的字段有关;一
个表级检查约束只能与限制的表中字段有关;
一个表中可以定义多个检查约束;每个
CREATE TABLE 语句中的每个字段只能定
义一个检查约束;在多个字段上定义检查约束,
则必须将检查约束定义为表级约束;当执行
INSERT 语句或者 UPDATE 语句时,检查约
束将验证数据。
6. 主键约束的作用和创建方式是什么?
答:一个表通常可以通过一个列或多个列组合
的数据来唯一标识表中的每一行,这个列或列
的组合就称为表上的主键。创建表中的主键是
为了保证数据的实体完整性。PRIMARY KEY (主
键)约束用于定义基本表的主键,它是唯一确
定表中每一条记录的标识符,其值不能为
SQL Server 2008数据库应用与开发教程(第二版)
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 |
SQL Server 2008数据库应用与开发教程(第二版)
NONCLUSTERED ]
] [,... n]
)
7. UNIQUE约束的使用场景是什么?
答:一个表只能有一个主键,若有多列或多个
列组合需要实施数据惟一性,则可采用惟一约
束。惟一约束与主键约束的主要区别在于:惟
一约束用于非主键列,使之满足数据惟一性要
求;惟一约束允许NULL值,而主键不允许;
惟一约束可以在多列或多个列组合上分别设
置,而主键只能在一列或一个列组合上设置。
8. 外键约束的特点是什么?
答:FOREIGN KEY约束是用于建立和加强两
个表数据之间的链接的一列或多列。设置表中
的外键约束是为了保证数据的参照完整性。
SQL Server 2008中的关系保证了表之间的连
接,用外键表(参照关系)中的外键引用主键表
(被参照关系)中的主键。一旦创建了关系并将
SQL Server 2008数据库应用与开发教程(第二版)
关系成功地加入到数据库中,就能够保证数据
的参照完整性。FOREIGN KEY约束确保了同
一个表或者不同表之间的引用完整性。
第十章习题参考答案
1. 试说明存储过程的特点及分类
存储过程是事先编好的、存储在数据库中一组
被编译了的T-SQL命令集合,这些命令用来完
成对数据库的指定操作。
SQL Server 2008支持不同类型的存储过程:系
统存储过程、扩展存储过程、用户存储过程,
以满足不同的需要。
2. 举例说明存储过程的定义与调用
创建名为snoquery的存储过程:通过用户输入
学生学号来查询学生的姓名、年龄、性别和所
属院系。
定义存储过程:
(1)启动SSMS,展开服务器。
(2)展开所需的“数据库”文件夹,展开要在
其中创建存储过程的数据库。本例中,我们展
SQL Server 2008数据库应用与开发教程(第二版)
开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)的存储过程ry。
SQL Server 2008数据库应用与开发教程(第二版)
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表中有三行数据受影响。说明设定
的触发器被触发,sc表中的相应数据被自动删
除。
第十一章习题参考答案
SQL Server 2008数据库应用与开发教程(第二版)
1. 在SQL Server 2005中备份和还原的方法都
有哪些?
答:Microsoft SQL Server 2005提供了4种不
同的备份方式:完整备份和完整差异备份、部
分备份和部分差异备份、事务日志备份、数据
库文件和文件组备份。
2. 数据库导入导出的概念和作用是什么?
答:通过导入和导出操作可以在SQL Server
2005和其他异类数据源(例如Excel或Oracle
数据库)之间轻松地移动数据。例如,可以将数
据从Excel应用程序导出到数据文件,然后将
该数据文件导入到SQL Server表中。导出是
指将数据从SQL Server表复制到数据文件中。
导入是指将数据从数据文件加载到SQL
Server表中。
3. 分离和附加数据库时,要注意哪些事项?
答:在进行分离和附加数据库操作时,首先要
SQL Server 2008数据库应用与开发教程(第二版)
注意以下几点:
(1) 不能进行更新,不能运行任务,用户也不
能连接在数据库上。
(2) 在移动数据库之前,为数据库做一个完整
的备份。
(3) 确保数据库要移动的目标位置及将来数据
增长能有足够的空间。
(4) 分离数据库并没有将其从磁盘上真正的删
除。如果需要,可以对数据库的组成文件进行
移动、复制或删除。
4. 自动化管理任务的概念。
答:作为SQL Server 2005数据库的管理员,
有许多日常工作是相同或相似的,而且需要每
天(或每隔一段时间)重复操作。这就使这份工
作变得有些枯燥乏味。为了使管理更加方便,
SQL Server 2005提供了自动化管理任务的机
制,很多具有重复性的工作可以交给SQL
Server 2005来自动完成。
SQL Server 2008数据库应用与开发教程(第二版)
第十二章习题参考答案
1. 什么是事务?简述事务ACID原则的含义。
答:事务(TRANSACTION)是由对数据库的若
干操作组成的一个逻辑工作单元,这些操作要
么都执行,要么都不执行,是一个不可分割的
整体。事务用这种方式保证数据满足并发性和
完整性的要求。使用事务可以避免发生有的语
句被执行,而另外一些语句没有被执行,从而
造成数据不一致的情况。
事务的处理必须满足4原则,即原子性(A)、一
致性(C)、隔离性(I)和持久性(D),简称ACID
原则:
● 原子性(Atomicity):事务必须是原子工作
单元,事务中的操作要么全部执行,要么
全部不执行,不能只完成部分操作。原子
性在数据库系统中,由恢复机制来实现;
● 一致性(Consistency):事务开始前,数据
库处于一致性的状态;事务结束后,数据
库必须仍处于一致性状态。数据库一致性
的定义是由用户负责的,如前面所述的银
行转账,用户可以定义转账前后两个账户
SQL Server 2008数据库应用与开发教程(第二版)
金额之和应该保持不变;
● 隔离性(Isolation):系统必须保证事务不受
其他并发执行事务的影响,即当多个事务
同时运行时,各事务之间相互隔离,不可
互相干扰。事务查看数据时所处的状态,
要么是另一个并发事务修改它之前的状
态,要么是另一个并发事务修改它之后的
状态,事务不会查看中间状态的数据。隔
离性通过系统的并发控制机制实现;
● 持久性(Durability):一个已完成的事务对
数据所做的任何变动在系统中都是永久有
效的,即使该事务产生的修改是不正确,
错误也将一直保持。持久性通过恢复机制
实现,发生故障时,可以通过日志等手段
恢复数据库信息。
2. 为什么要使用锁?SQL Server 2008提供了
哪几种锁的模式。
答:在单用户数据库中,由于只有一个用户
修改信息,不会产生数据不一致的情况,因此
并不需要锁。当允许多个用户同时访问和修改
数据时,就需要使用锁来防止对同一个数据的
并发修改,避免产生丢失更新、脏读、不可重
复读和幻读等问题。
锁(lock)的基本原则是允许一个事务更新数据,
当必须回滚所有修改时,能够确信在第一个事
SQL Server 2008数据库应用与开发教程(第二版)
务修改完数据之后,没有其他事务在数据上进
行过修改。即锁提供了事务的隔离性。
事务一旦获取了锁,则在事务终止之前,将一
直持有该锁。如果其他事务尝试访问数据资源
的方式与该事务所持有的锁不兼容,则其他事
务必须停止执行,直到拥有锁的事务终止、不
兼容的锁被释放,才可以使用解锁的数据资源。
在SQL Server 2008中,系统能够自动处理锁
的行为。
共有6种锁,分别是:共享锁、更新锁、排他
锁、意向锁、架构锁和大容量更新锁。
3. 什么是死锁?如何预防死锁?怎么解决死
锁?
答:死锁就是两个事务各对一个资源加锁,都
想使用对方的资源,但同时又不愿放弃自己的
资源,于是一直等待对方放弃资源。如果不进
行外部干涉,死锁将一直持续。死锁会造成资
源的大量浪费,甚至会使系统崩溃。
SQL Server 2008数据库应用与开发教程(第二版)
解决死锁最好的方法就是防止死锁的发生,即
不让满足死锁条件的情况发生。为此,用户需
要遵循以下原则:
(1) 尽量避免并发地执行涉及到修改数据的语
句;
(2) 要求每个事务一次就将所有要使用的数据
全部加锁,否则就不予执行;
(3) 预先规定一个加锁顺序。所有的事务,都
必须按这个顺序对数据进行加锁。例如,不同
的过程在事务内部对对象的更新执行顺序应尽
量保持一致;
(4) 每个事务的执行时间不可太长,尽量缩短
事务的逻辑处理过程,及早提交或回滚事务。
对程序段长的事务可考虑将其分割为几个事
务;
(5) 一般不要修改SQL Server事务的默认级
别。不推荐强行加锁。
4. CREATE PARTITION FUNCTION命令
SQL Server 2008数据库应用与开发教程(第二版)
的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,
SQL Server 2008数据库应用与开发教程(第二版)
CREATED FROM DBA_OBJECTS;
8. 哪3个操作可以用来管理分区,每个操作
的目的又是什么?
答:1. 切换分区:使用ALTER TABLE 语句
的SWITCH 子句可以将已填充的表或分区与
空的表或分区进行交换。
2. 合并分区:使用ALTER PARTITION
FUNCTION 语句可以合并分区。执行合并操
作时,在该语句中,指定了边界值的分区将被
删除,并且该数据合并到相邻的分区中。
3. 拆分分区:拆分分区也使用ALTER
PARTITION FUNCTION 语句。拆分分区将
创建新分区,并相应的重新分配数据。新的分
区创建在基于分区函数的每一个分区方案中指
定为下一个文件组的文件组中。
9. 哪个运算符可用来在表之间移动分区?
SQL Server 2008数据库应用与开发教程(第二版)
答:SPLIT运算符
10. SQL Server Integration Services(SSIS)有
3种不同类型的控制流组件:容器、_任务_和_
优先 约束。
11. SQL Server Integration Services(SSIS)有
4种不同类型的数据流组件:提取数据的源、
修改和聚合数据的转换、加载数据的目标以及
将数据流组件的输出和输入连接为数据流的路
径。
12. 简述什么是OLAP。
答:SQL Server 2008分析服务(Microsoft
SQLServer Analysis Services,SSAS)是微软
SQL Server 2008中的多维联机分析处理
(Online Analytical Processing,OLAP)组件,
它在商业智能(Business Intelligence,BI)分析方
案中集成关系型和OLAP数据。分析服务允许
开发人员设计、创建和管理包含从其他数据源
SQL Server 2008数据库应用与开发教程(第二版)
(如关系数据库)聚合的数据的多维结构,以实
现对OLAP的支持。对于数据挖掘应用程序,
分析服务允许开发人员设计、创建和可视化处
理那些通过使用行业标准数据挖掘算法,并根
据其他数据源构造出来的数据挖掘模型。商业
智能(BI)、数据仓库、分析服务的关系。
版权声明:本文标题:sql-server-2008-数据库应用与开发教程--课后习题参考答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713354854a630568.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论