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

