收藏 分享(赏)

第6章 创建和管理数据表.ppt

上传人:gnk289057 文档编号:9358114 上传时间:2019-08-03 格式:PPT 页数:88 大小:675.50KB
下载 相关 举报
第6章  创建和管理数据表.ppt_第1页
第1页 / 共88页
第6章  创建和管理数据表.ppt_第2页
第2页 / 共88页
第6章  创建和管理数据表.ppt_第3页
第3页 / 共88页
第6章  创建和管理数据表.ppt_第4页
第4页 / 共88页
第6章  创建和管理数据表.ppt_第5页
第5页 / 共88页
点击查看更多>>
资源描述

1、第6章 创建和管理数据表,任课老师:,【本章要点】,在使用数据库的过程中,接触最多的数据库对象是数据表。数据库创建后,就需要创建数据表,用于存储数据。数据表是数据库中最重要的部分,管理好数据表也就管理好了数据库。本章主要介绍数据表的创建与管理、数据完整性的概念及实施,包括以下内容:数据表的设计与创建;数据表的更名与删除;数据表结构的修改;数据的添加、更新与删除;数据完整性的概念以及约束的创建方法。,61 数据表概述,数据表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似,也是按行和列的格式组织的。每一行代表一条惟一的记录,每一列代表记录中的一个字段。例如,在包含员工基

2、本信息的数据表中,每一行代表一名员工,各列分别代表该员工的信息,如员工编号、姓名、地址、职位以及家庭电话号码等。,61 数据表概述,1数据表的特点作为存储各种数据载体的数据表,具有以下特点:在某一具体的数据库中每张数据表的表名应该是惟 一的;而在某一具体的数据表中,列名(也称为字段名)也 应该是惟一的。但在不同的数据表中,可以有相同的列 名。组成数据表的行和列的次序是任意的。在每个SQL Server 2005数据库中,最多可以包含 20亿张数据表;在每张数据表中,最多可以有1024列,每 行最多可以有8060个字节的数据。数据行在表中是惟一的,行的惟一性可以通过定义 主关键字来实现。在一个表

3、中。不允许有两个完全相同的 行存在。,61 数据表概述,2特殊类型的数据表在数据库中,除了用户创建的表以外,SQL Server 2005 还提供了在数据库中起着特殊的作用的表:已分区表、临时表、系统表。,61 数据表概述,(1)已分区表已分区表是将数据水平划分为多个单元的表,这些单元可以分布到数据库中的多个文件组中。在维护整个集合的完整性时,使用分区可以快速而有效地访问或管理数据子集,从而使大型表或索引更易于管理。在分区方案下,将数据从OLTP(联机事务处理)加载到OLAP(联机管理程序)系统的操作只需几秒钟,而不是像在早期版本中那样需要几分钟或几小时。,61 数据表概述,对数据子集执行的维

4、护操作也将更有效,因为它们的目标只是所需的数据,而不是整个表。如果表非常大或者有可能变得非常大,并且属于下列任一情况,那么分区表将很有意义:()表中包含或可能包含以不同方式使用的许 多数据;()对表的查询或更新没有按照预期的方式执 行,或者维护开销超出了预定义的维护期。,61 数据表概述,已分区表支持所有与设计和查询标准表关联的属性和功能,包括约束、默认值、标识和时间戳值、触发器和索引。因此,如果要实现一台服务器本地的分区视图,用户应该改为实现已分区表。,61 数据表概述,(2)临时表临时表有两种类型:本地表和全局表。在与首次创建或引用表时相同的 SQL Server 实例连接期间,本地临时表

5、只对于创建者是可见的。当用户与 SQL Server 实例断开连接后,将删除本地临时表。全局临时表在创建后对任何用户和任何连接都是可见的,当引用该表的所有用户都与 SQL Server 实例断开连接后,将删除全局临时表。,61 数据表概述,(3)系统表SQL Server 将定义服务器配置及其所有表的数据存储在一组特殊的表中,这组表称为系统表。除非通过专用的管理员连接(DAC,只能在 Microsoft 客户服务的指导下使用),否则用户无法直接查询或更新系统表。通常在 SQL Server 的每个新版本中更改系统表。对于直接引用系统表的应用程序,可能必须经过重写才能升级到具有不同版本的系统表的

6、 SQL Server 更新版本。可以通过目录视图查看系统表中的信息。,61 数据表概述,特别提示:SQL Server 2005数据库引擎系统表已作为只读视图实现,目的是为了保证 SQL Server 2005 中的向后兼容性。系统表中的数据无法直接使用。,62 创建数据表,621 设计数据表1数据表计划指南在设计数据库时,必须先确定数据库所需的数据表、每个数据表中数据的类型以及可以访问每个表的用户。,62 创建数据表,在创建数据表及其数据库对象前,应该先规划出用户的计划并确定表的下列特征: 表要包含的数据的类型。表中的列数,每一列中数据的类型和长度(如 果必要)。哪些列允许空值。是否要使用

7、以及何处使用约束、默认设置和规 则。所需索引的类型,哪里需要索引,哪些列是主 关键字等。,62 创建数据表,创建数据表的最有效的方法是同时定义表中所需的所有内容。这些内容包括表的数据限制和其他组件。在创建和操作数据表后,对表进行更为细致的设计。创建数据表时,也可以先创建一个基表,向其中添加一些数据,并使用一段时间,使用户可以在添加各种约束、索引、默认设置、规则和其他对象形成最终设计之前,发现哪些事务最常用,哪些数据经常输入。,62 创建数据表,2列的数据类型设计数据表时首先要执行的操作之一是为每个列指定数据类型,定义各列允许使用的数据值。为列指定数据类型的方法可以是:使用 SQL Server

8、 2005 系统数据类型。创建基于系统数据类型的别名数据类型。从在 Microsoft .NET Framework 公共语言运 行时中创建的类型中创建用户定义类型。,62 创建数据表,3自动编号列和标识符列对于每张数据表,均可创建一个包含系统生成的序号值的标识符列,该序号值以唯一方式标识数据表中的每一行。例如,当在数据表中插入行时,标识符列可自动为应用程序生成唯一的员工编号。标识符列在其所定义的数据表中包含的值通常是唯一的。这意味着包含标识符列的其他数据表可包含与另一个数据表所用的标识值相同的标识值。,62 创建数据表,但是,由于标识符值通常是在单个数据表的上下文中使用,并且标识符列与其他数

9、据表中的标识符列不相关,因此通常不会出现问题。4计算列计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。,62 创建数据表,除非另行指定,否则计算列是未实际存储在表中的虚拟列。每当在查询中引用计算列时,都将重新计算它们的值。SQL Server 2005数据库引擎在CREATE TABLE和ALTER TABLE语句中使用PERSISTED关键字来将计算列实际存储在表中。如果在计算列的计算更改时涉及任何列,将更新计算列的值。,62 创建数据表,通过将计算列标记为 PERSIST

10、ED,可以对具有确定性但不精确的计算列创建索引。另外,如果计算列引用CLR 函数,则数据库引擎不能验证该函数是否真正具有确定性。在这种情况下,计算列必须为 PERSISTED,以便可对其创建索引。注意:必须对用作已分区表的分区依据列的任何计算列进行显式持久化。,62 创建数据表,计算列可用于选择列表、WHERE子句、ORDER BY子句或任何可使用正则表达式的其他位置,但下列情况除外:用作CHECK、FOREIGN KEY或NOT NULL约束的 计算列必须标记为PERSISTED。如果计算列的值由具有 确定性的表达式定义,并且索引列中允许使用计算结果的 数据类型,则可将该列用作索引中的键列,

11、或者用作 PRIMARY KEY或UNIQUE约束的一部分。 如果表中含有整数列a和b,则可以对计算列a+b创 建索引,但不能对计算列a+DATEPART(dd, GETDATE() 创建索引,因为在后续调用中,其值可能发生改变。计算列不能作为 INSERT 或 UPDATE 语句的目 标。,62 创建数据表,数据库引擎基于使用的表达式自动确定计算列的为空性。即使只有非空列,大多数表达式的结果也“认为”可为空值,因为下溢或溢出生成的结果也可能为空。使用带 AllowsNULL属性的 COLUMNPROPERTY 函数可查明表中任何计算列的为空性。通过指定 ISNULLISNULL(check_

12、expression, constant)可以将可为空值的表达式转换为不可为空值的表达式,其中, constant 是可替换所有空结果的非空值。,62 创建数据表,5数据表结构设计示例以员工基本信息表Employees的结构设计为例,表中有23列,其中,EmpID为主关键字。整张表的结构见表4-2。,62 创建数据表,622 创建数据表创建数据表可以使用SQL Server Management Studio及T-SQL语言的CREATE TABLE语句。1使用SQL Server Management Studio使用SQL Server Management Studio创建数据表的步骤:

13、,62 创建数据表,(1)在打开的“Microsoft SQL Server Management Studio”窗口的“对象资源管理器”中,在欲创建数据表的数据库(本实例为“RSGLXT”)的“表”节点上,单击鼠标右键,弹出快捷菜单。在快捷菜单中选择“新建表”,如图6-1所示。,62 创建数据表,图6-1 选择新建表,62 创建数据表,(2)在打开的“表设计器”窗口中,根据设计的数据表结构,输入“列名”、“数据类型”,并选择是否“允许空”。本实例以表4-1部门信息表(Departments)为例。并输入表名称、说明等,如图6-2所示。,62 创建数据表,图6-2 表设计器-Departmen

14、ts表结构,62 创建数据表,(3)执行“文件”“保存Departments”菜单命令,完成数据表结构的创建。以同样的方法,可以完成其他数据表的创建。2使用T-SQL语言使用T-SQL语言创建表的语句是CREATE TABLE。(详细的语法及参数的含义见教材),62 创建数据表,示例1:使用CREATE TABLE语句创建部门信息表(department,表结构见表4-1)。该表有4个字段:DepID(部门编号,主关键字)、DepName(部门名称)、Descirbes(部门职能描述)和UpperID(上级部门编号)。创建数据表的具体步骤为:在Microsoft SQL Server Mana

15、gement Studio窗口中,选择数据库后,单击“新建查询”按钮。,62 创建数据表,在查询窗口中,输入以下代码: USE RSGLXT GO CREATE TABLE department (DepID int NOT NULL PRIMARY KEY,DepName varchar(40),Descirbies varchar(250),UpperID int ),62 创建数据表,输入代码后,单击“执行”按钮,完成数据表结构的创建。单击“刷新”按钮,即可在对象资源管理器中看到新建的数据表。随后可输入数据。完成数据表的创建。显然,由于使用T-SQL语句创建数据表要涉及烦琐、复杂的语句语

16、法,不如使用Microsoft SQL Server Management Studio创建数据表来的直观、方便。,63 数据表的管理,631 数据表的更名与删除数据表创建后,可以使用SQL Server Management Studio或T-SQL语言对其进行更名、删除。注意:删除数据表后,该表的结构定义、数据、全文索引、约束和索引都从数据库中永久删除。因此,要删除的数据表必须是确认不再使用的数据表。对数据表的更名将导致引用该表的存储过程、视图、触发器的失效。所以,对数据表的更名、删除特别慎重。,63 数据表的管理,1使用SQL Server Management Studio使用SQL

17、Server Management Studio对数据表的更名、删除的方法如下:在“Microsoft SQL Server Management Studio”窗口的“对象资源管理器”中,选择欲更 名或删除的数据表;单击鼠标右键,在弹出 的快捷菜单上,单击“重命名”或“删除”,确认 后即可对数据表进行更名或删除。,63 数据表的管理,2使用T-SQL语言(1)数据表的更名数据表的更名可以使用数据库引擎存储过程sp_rename。语法形式如下: sp_rename objname = object_name , newname = new_name , objtype = object_typ

18、e 该语句可更改当前数据库中用户创建对象的名称。对象可以是表、索引、列、别名数据类型等。,63 数据表的管理,其中参数的含义: objname = object_name:用户对象或数据类型的当前限定或非限定名称。如果要重命名的对象是表中的列,则 object_name 的格式必须是 table.column。如果要重命名的对象是索引,则 object_name 的格式必须是 table.index。 只有在指定了合法的对象时才必须使用引号。如果提供了完全限定名称,包括数据库名称,则该数据库名称必须是当前数据库的名称。 newname = new_name:指定对象的新名称。new_name

19、必须是名称的一部分。,63 数据表的管理,(2)删除数据表删除数据表可以使用T-SQL语言的DROP TABLE命令。DROP TABLE命令的语法如下: DROP TABLE database_name . schema_name . | schema_name . table_name ,.n ; 其中参数的含义: database_name:要在其中创建表的数据库的名称 schema_name:表所属架构的名称。 table_name:要删除的表的名称。,63 数据表的管理,632 修改数据表的结构数据表创建完成之后,可以由于客户需求的变化、原先的需求分析不恰当等原因,需要对最初创建的数

20、据表的结构进行修改。修改的选项可以包括:添加或删除列。修改列。如修改列的名称、长度、数 据类型、精度、小数位数以及为空性等。对已分区的表,可以重新分区,也可 以添加或删除单个分区。,63 数据表的管理,可以添加或删除 PRIMARY KEY 约束和 FOREIGN KEY 约束。可以添加或删除 UNIQUE 约束和 CHECK 约 束以及 DEFAULT 定义和对象。可以使用 IDENTITY 属性或 ROWGUIDCOL 属性添加或删除标识符列。虽然表中一次只能有一列 具有 OWGUIDCOL 属性,但是也可以将 ROWGUIDCOL 属性添加到现有列或从现有列删除。表的名称或架构也可以更改

21、。执行此操作时, 还必须更改使用该表的旧名称或架构的所有触发器、 存储过程、Transact-SQL 脚本或其他程序代码中表 的名称。,63 数据表的管理,修改数据表的结构有两种方法:()使用SQL Server Management Studio()使用T-SQL语句1使用SQL Server Management Studio使用SQL Server Management Studio修改数据表结构的步骤如下:(1)在“Microsoft SQL Server Management Studio”窗口的“对象资源管理器”中,选择要修改结构的数据表;单击鼠标右键,在弹出的快捷菜单中,单击“修

22、改”,如图6-3所示。,63 数据表的管理,图6-3 选择需要修改的表,63 数据表的管理,(2)在打开的数据表中,选择要修改的列,可更改列名、数据类型,以及其他列属性。(3)如要增加列,可选择新增列的位置,然后右击鼠标,在弹出的快捷菜单中单击“插入列”(如图6-4所示),窗口中会在选定列的前面插入个空行,用户在空行里输入相应的列信息即可。(4)如要删除列,可选择欲删除的列,在如图6-4所示的快捷菜单中单击“删除列”。,63 数据表的管理,图6-4 在数据表中添加列,63 数据表的管理,2使用T-SQL语言使用T-SQL语言修改数据表的结构,可以用ALTER TABLE语句进行列的添加或删除,

23、以及修改列属性。(1)ALTER TABLE语句的语法形式(ALTER TABLE语句的语法形式详见教材)(2)ALTER TABLE语句使用示例,63 数据表的管理,示例2:对数据库(RSGLXT)中Employees(员工基本信息表)数据表的结果进行以下修改。修改Memo字段的数据长度,由200改为300;删除“工作岗位”列,字段名为:Positional;增加“居住住址”列,字段名:Residence,数据类型:varchar,字段长度:100;增加“邮政编码”列,字段名:Postcode,数据类型:varchar,字段长度:10。在Microsoft SQL Server Manage

24、ment Studio窗口中,单击“新建查询”按钮,在“查询”窗口中,输入如下代码:,63 数据表的管理,Use RSGLXT GO ALTER TABLE dbo.Employees ALTER COLUMN Memo varchar(300) GO ALTER TABLE dbo.Employees DROP COLUMN Positional GO ALTER TABLE dbo.Employees ADD Residence varchar(100), Postcode varchar(10),63 数据表的管理,代码输入后,单击“执行”按钮,执行T-SQL语句,完成修改后,可在Mic

25、rosoft SQL Server Management Studio窗口查看结果。提示:上述示例中对数据表列的修改、删除、增加,可以分别进行。如果删除列和增加列欲在一段代码中执行,应注意顺序,一定要先删除后增加,否则,系统报错。,63 数据表的管理,633 数据的添加、更新、删除数据表创建、修改完成后,即可在数据表中添加数据。数据添加后,还可以根据需要对数据进行更新和删除。数据表中数据的添加、更新与删除可以使用SQL Server Management Studio和使用T-SQL语句。,63 数据表的管理,1使用Microsoft SQL Server Management Studio在

26、“Microsoft SQL Server Management Studio”窗口的“对象资源管理器”中,选择要添加、更新、删除数据的数据表;单击鼠标右键,在弹出的快捷菜单中,单击“打开”,打开数据表界面,如图6-5所示。,63 数据表的管理,图6-5 打开数据表,63 数据表的管理,在打开新建的数据表中,可以添加数据;如数据表已有数据,可选择相应的记录、字段对数据进行更新;在单元格上,单击鼠标右键,在快捷菜单上选择“删除”,即可相应的记录删除。在SQL Server Management Studio中修改数据表记录时,按“Home”键快速选中记录的第一个字段,按“End”键可快速选中记录

27、的最后一个字段;按“Esc”键撤销当前记录的修改;按“Ctrl+0”键将字段设置为NULL。,63 数据表的管理,注意:表中的列在设计时常带有约束,如数据类型、空值约束、CHECK约束(如取值范围)等,无论添加数据、还是更新数据,都必须遵循约束的限制。,63 数据表的管理,2使用T-SQL语言使用T-SQL语言的INSERT INTO语句可向数据表添加数据,UPDATE、DELETE语句可以对数据表中的数据进行更新、删除的操作。(1)添加数据在数据表中添加数据,可以使用INSERT语句。使用INSERTVALUES语句添加记录使用INSERTVALUES语句每次只能向表中添加一条记录。,63

28、数据表的管理,简单的语法形式如下:INSERT INTO table_name (column_list)VALUES (values_list)各参数的含义:table_name:要添加数据的表名。column_list:要添加数据的字段名列表; values_list:与字段名列表相对应的字段的值。,63 数据表的管理,说明:若是向表中所有的列都插入新数据时,可以省 略字段名列表(不推荐),但必须保证VALUES后的各 数据项位置同数据表结构中的列顺序一致。应用字段名列表时,字段名之间加逗号分隔, 括号不可少。添加的数据,必须保证数据的完整性。,63 数据表的管理,示例3:在RSGLXT数

29、据库的Departments数据表插入一条记录。具体数据如下:DepID(部门编号):1;DepName(部门名称):技术一部;Describes(部门职能描述):负责产品的研发等;UpperID(上级部门编号):2代码如下:USE RSGLXTGOINSERT INTO Departments (DepID,DepName,Describes,UpperID)VALUES (1,技术一部,负责产品的研发等,2),63 数据表的管理,使用INSERTSELECT语句添加记录若需要向数据表中添加成千上百条记录,显然使用INSERTVALUES语句的作用是有限。如果数据来源是数据库中已经存在的。此

30、时,可以使用INSERTSELECT语句将一个或多个数据表中的数据添加到指定的数据表中。,63 数据表的管理,INSERTSELECT语句的语法形式如下:INSERT INTO table_name (column_list)SELECT column_listFROM table_listWHERE search_conditions使用INSERTSELECT语句可以创建查询表,还可以用于修改表。,63 数据表的管理,(2)更新数据在向数据表中添加数据以后,可能需要对数据表中的数据进行修改。在SQL Server 2005中,对数据的修改可以通过UPDTAE语句来实现。使用UPDATE语句

31、可以每次修改数据表中的一条记录、一组记录或所有记录。,63 数据表的管理,UPDATE语句的语法形式如下:UPDATE table_nameSET column_list = expressionWHERE search_conditions其中:table_name:要更新数据的表名;column_list:要更新数据的字段列表;expression:更新后的数据值;WHERE search_conditions:更新数据应满足的条件。,63 数据表的管理,(3)删除数据如果数据表中的数据不再需要时,可以使用DELETE语句将记录从数据表中删除。 DELETE语句的语法形式如下:DELETE

32、 FROM table_nameWHERE search_conditiom若不加WHERE子句,将会删除表中的所有记录,所以使用时应特别小心。,64 数据完整性概述,数据库中的数据在输入时,经常会发生输入无效或错误信息。在数据库管理系统中,保证数据库中的数据完整性是非常重要的。641 数据完整性的概念数据完整性是指数据库中数据的一致性和正确性。数据的完整性是为了防止数据库中存在不符合语义规定的数据、防止因错误信息的输入输出造成无效操作或错误信息而提出的。强制数据完整性可以确保数据库中的数据质量。,64 数据完整性概述,1数据完整性的类型数据的完整性分为4类:实体完整性(Entity Inte

33、grity):规定表中的每一行在表中是唯一的实体,即将表中的每一行都看作一个实体。实体完整性要求表的标识符列或主键的完整性。实体完整性可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束以及列的IDENTITY属性来实现。,64 数据完整性概述,域完整性(Domain Integrity):是指数据表中的列必须满足某种特定的数据类型或约束。其中约束包括取值范围、精度等规定(如:学生的考试成绩必须在0100之间,性别只能是“男”或“女”)。强制域有效性的方法有:限制类型、格式(通过CHECK约束和规则)或可能值的范围。域完整性可以通过FOREIGN KEY约束、CHECK约束、DE

34、FAULT定义、NOT NULL定义和规则来实现。,64 数据完整性概述,参照完整性(Referential Integrity):是指两个数据表的主关键字和外关键字的数据应对应一致。参照完整性可以防止数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外关键字和主关键字之间,或外关键字和唯一性关键字之间的关系上。一致性要求不能引用不存在的值,如果键值更改了,则在整个数据库中,对该键值的所有引用都要进行一致性的更改。,64 数据完整性概述,在SQL Server数据库中禁止用户进行下列操作:()当主表中没有关联的记录时,将记录添加 到相关表中;()更改主表中的值并导致相关表中的记录 孤立;

35、()从主表中删除记录,但仍存在与该记录匹 配的相关记录。用户定义的完整性(User-defined Integrity):是针对某个特定关系数据库的约束条件,它反映了某一具体应用所涉及的数据必须满足的语义要求。所有的完整性类型都支持用户定义完整性。,64 数据完整性概述,2数据完整性的实施方法数据完整性任何时候都可以实施,但对已有数据的表实施数据完整性时,系统要先检查表中的数据是否满足所实施的完整性,只有表中数据满足了所实施的完整性,数据完整性才能实施成功。数据完整性的实施方法有声明型和过程型两种。,64 数据完整性概述,声明型数据完整性一般在对象创建时定义,由系统强制实施,通常使用约束、默认

36、值和规则来实现。实现基本数据完整性的首选方法是使用声明型数据完整性。使用这种方法实现数据完整性简单且不易出错,系统直接将实现数据完整性的要求定义在表和列上。,64 数据完整性概述,过程型数据完整性是指由某个过程引发而实施的数据完整性。一般先写出实施数据完整性的条件,再写出强制该条件所执行的用于保证数据完整性的脚本。通常由触发器和存储过程实现。过程型数据完整性也可以在客户机和服务器上使用其他编程语言和工具实现。,64 数据完整性概述,保证数据库完整性的方法主要有:规则(RULE)、默认值(DEFAULT)、约束(CONSTRAINT)和触发器(TRIGGER)。使用约束优先于使用触发器、规则和默

37、认值。规则。规则是数据库对象之一。规则指定向数据表添加或更新数据时,限制新数据的取值范围。规则与CHECK约束的功能相同。,64 数据完整性概述,默认值。如果插入行时没有为列指定数据,默认值则指定列中使用什么数据。默认值可以是计算结果为常量的任何值,例如常量、内置函数或数学表达式。若要应用默认值,可以通过在 CREATE TABLE 中使用 DEFAULT 关键字来创建默认值定义,为每一列分配一个常量表达式作为默认值。特别提示:后续版本的 Microsoft SQL Server 将删除规则、默认值的功能。用户在新的开发工作中应避免使用规则、默认值功能,并着手修改当前还在使用规则、默认值功能的

38、应用程序。,64 数据完整性概述,642 约束约束(CONSTRAINTS)是强制数据完整性的首选方法。1约束的类型约束可分为列级约束和表级约束。如果约束只对一列起作用,称之为列级约束,如果约束对多列起作用,则称之为表级约束。约束也可分为非空约束、缺省约束、检查约束、主关键字约束、惟一约束和外关键字约束(参照约束)6类。,64 数据完整性概述,非空约束(NOT NULL):限定数据表中的某些列必须存在有效值,不允许有空值出现。这是最简单的数据完整性约束,在创建数据表时将该列声明为NOT NULL即可。缺省约束(DEFALUT CONSTRAINTS):当向数据表添加数据时,如果用户没有具体给定

39、某列的数据,系统自动为该列指定数据。检查约束(CHECK CONSTRAINTS):限定在列中添加数据的范围。,64 数据完整性概述,主关键字约束(PRIMARY KEY CONSTRAINTS):限定主关键字的列上不能有两行具有相同的数据,也没有空值。惟一约束(UNIQUE CONSTRAINTS):限定数据表中所有行在指定的列上没有完全相同的数据。外关键字约束(FROEIGN KEY CONSTRAINTS):限定正被添加或更新的列(外键)的新数据,必须在被参照表(主表)的相应列(主关键字)中已经存在。,64 数据完整性概述,约束的创建可以使用SQL Server Management S

40、tudio,也可以使用T-SQL语言的CREATE TABLE语句或ALTER TABLE语句创建。使用T-SQL语句创建约束的方法,参见“数据表的创建”、“数据表的修改”以及相关的资料。,64 数据完整性概述,2使用SQL Server Management Studio创建约束(1)创建缺省约束具体步骤为:打开SQL Server Management Studio;选择要设置缺省约束的数据表(本示例为Employees),在快捷菜单上单击“修改”,打开“表设计器”窗口,如图6-6所示。选择欲设置缺省约束的列,在列属性设置栏的“默认值或绑定”输入框中,输入相应的默认值即可。,64 数据完整

41、性概述,图6-6 表设计器窗口,64 数据完整性概述,(2)创建检查约束具体步骤为:打开“表设计器”窗口(如图6-6所示);在右击弹出的快捷菜单上,单击“CHECK约束”,打开“CHECK约束”窗口,如图6-7所示。单击“添加”按钮,显示系统默认的约束名,在表达式窗格输入约束条件;单击“关闭”按钮,完成CHECK约束创建。,64 数据完整性概述,图6-7 CHECK约束设置窗口,64 数据完整性概述,(3)创建主关键字约束具体步骤为:在“表设计器”窗口,选择欲设置主关键字的字段;在右击弹出的快捷菜单上,单击“设置主键”即可,如图6-8所示。若要将多个字段设置为主关键字,则需先选中要设为主关键字

42、的多个字段,再在右击弹出的快捷菜单上选择“设置主键”。取消主关键字的设置,只需在已设为主关键字的字段上右击,在弹出的快捷菜单上选择“移除主键”即可。,64 数据完整性概述,图6-8 设置主键窗口,64 数据完整性概述,(4)创建唯一性约束具体步骤为:打开“表设计器”窗口;在右击弹出的快捷菜单上,单击“索引/键”,打开“索引/键”窗口,如图6-9所示。单击“添加”按钮,系统给出默认的惟一性约束名,在常规项“列”对应的输入框选择要创建惟一性约束的列名及排序顺序;在“是惟一的”对应的下拉框中选择“是”;单击“关闭”按钮,完成惟一性约束的创建。如需删除惟一性约束,只需在图6-9中选择要删除的惟一性约束

43、,单击“删除”按钮即可。,64 数据完整性概述,图6-9 “索引/键”设置窗口,64 数据完整性概述,(5)创建外键约束具体步骤为:打开“表设计器”窗口;在右击弹出的快捷菜单上,单击“关系”打开“外键关系”窗口,如图6-10所示。,64 数据完整性概述,图6-10 “外键关系”窗口,64 数据完整性概述,单击“添加”按钮,系统给出默认的关系名;点击“表和列规范”左边的“+”,再点击“表和列规范”右边的按钮,打开系统弹出的“表和列”窗口,如图6-11所示。在“表和列”窗口中,选择要参考主关键字的数据表名、表中的主关键字和外键表中设置外键的列名;单击“关闭”按钮,完成外键约束的创建。,64 数据完

44、整性概述,图6-11 表和列窗口,本章小结,数据表是包含数据库中所有数据的数据库对象,是其他数据库对象的基础,是使用数据库的过程中接触最多的数据库对象。 在创建数据表之前,首先要设计数据表。要确定表要包含的数据的类型;表中的列数,每一列中数据的类型和长度(如果必要);哪些列允许空值;是否要使用以及何处使用约束、默认设置和规则;所需索引的类型,哪里需要索引,哪些列是主关键字等。可以使用SQL Server Management Studio及TSQL语言的CREATE TABLE语句创建数据表。数据表创建后,还可以使用SQL Server Management Studio或TSQL语言对其进行更名、删除,以及对数据表的结构进行修改。,本章小结,数据表创建、修改完成后,即可在数据表中添加数据。数据添加后,还可以根据需要对数据进行更新和删除。数据表中数据的添加、更新与删除可以使用SQL Server Management Studio和使用TSQL语句。数据的完整性分为实体完整性、域完整性、参照完整性和用户定义的完整性四类。约束是强制数据完整性的首选方法。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报