模块四表中约束的创建和管理.ppt

上传人:小飞机 文档编号:6422325 上传时间:2023-10-29 格式:PPT 页数:34 大小:241KB
返回 下载 相关 举报
模块四表中约束的创建和管理.ppt_第1页
第1页 / 共34页
模块四表中约束的创建和管理.ppt_第2页
第2页 / 共34页
模块四表中约束的创建和管理.ppt_第3页
第3页 / 共34页
模块四表中约束的创建和管理.ppt_第4页
第4页 / 共34页
模块四表中约束的创建和管理.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《模块四表中约束的创建和管理.ppt》由会员分享,可在线阅读,更多相关《模块四表中约束的创建和管理.ppt(34页珍藏版)》请在三一办公上搜索。

1、模块四 数据的完整性操作,表中约束的创建和使用表中规则的使用表中默认的创建和使用IDENTITY列的应用,4.1 表的创建(复习),创建表的实质就是定义表结构及约束等属性,完成数据完整性。表的列名在同一个表中具有唯一性,同一列的数据属于同一种数据类型。除了用列名和数据类型来指定列的属性外,还可以定义其它属性:是否为空、默认值、标识符列、全局唯一标识符列等。建表的基本步骤:确定表中有哪些列确定每列的数据类型给表添加各种约束创建各表之间的关系,示例:为选课系统创建表,系部表,专业表,班级表,课程表,一、使用图形界面二、使用T-SQL语言创建 CREATE TABLE(,)给出要创建的基本表的名称;

2、给出列名或字段名;,输入的类型是否正确?年龄必须是数字输入的格式是否正确?身份证号码必须是18位是否在允许的范围内?性别只能是”男”或者”女”是否存在重复输入?学生信息输入了两次是否符合其他特定要求?信誉值大于5的用户才能够加入会员列表,列值要求(约束),整行要求(约束),列级完整性约束 用于定义列或字段一级的完整性约束,一般包括:NOT NULL和NULL约束 PRIMARY KEY约束 UNIQUE约束 FOREIGN KEY约束 DEFAULT定义 CHECK约束表级完整性约束用于定义表一级的完整性约束,一般包括:PRIMARY KEY约束(复合属性构成的主关键字说明)FOREIGN K

3、EY约束(外部关键字及参照关系说明)CHECK约束(同时涉及到多个属性的域完整性约束),若当前数据库中已经存在表stuInfo,再执行建表命令会出现什么情况呢?如何解决?Sysobjects表USE stuDB-将当前数据库设置为stuDB,以便在stuDB数据库中建表GOIF EXISTS(SELECT*FROM sysobjects WHERE name=stuInfo)DROP TABLE stuInfoCREATE TABLE stuInfo/*-创建学员信息表-*/(.),4.2 数据完整性,建表以后会对表进行增加、修改等等操作。可能造成数据的破坏或不一致的现象。为了保证数据的一致性

4、,除了小心操作数据以外,sql server本身也提供了一些机制来保证数据的完整性(约束、默认值、规则、触发器、存储过程等)。一、完整性的概念:数据完整性就是指存储在数据库中的数据正确无误并且相关数据具有一致性。二、完整性的分类:实体完整性(行的完整性):要求表中不能存在完全相同的纪录,而且每条纪录都要具有一个非空且不重复的主键值。域完整性(列的完整性):要求向表中指定列输入的数据必须具有正确的数据类型、格式以及有效的数据范围。参照完整性(引用完整性):指作用于有关联的两个或两个以上的表,通过使用主键和外键或唯一键和外键之间的关系,使表中的键值在相关表中保持一致。用户定义的完整性:是应用领域需

5、要遵守的约束条件,允许用户定义特定的业务规则。,完整性包括,实体完整性,约束方法:唯一约束、主键约束、标识列、唯一索引,域完整性,约束方法:限制数据类型、检查约束、外键约束、默认约束、非空约束等,引用完整性,约束方法:外键约束,自定义完整性,约束方法:规则、存储过程、触发器,触发器:检查信用值,使用约束,约束是 SQL Server 提供的自动强制数据完整性的一种方法。在SQL Server 2008中有6种约束:主键约束(primary key constraint)唯一性约束(unique constraint)检查约束(check constraint)默认约束(default cons

6、traint)外部键约束(foreign key constraint)非空约束(not null),为已存在的表添加约束的语法 ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 具体的约束说明约束名的取名规则推荐采用:约束类型_约束字段主键(Primary Key)约束:如 PK_stuNo唯一(Unique Key)约束:如 UK_stuID默认(Default Key)约束:如 DF_stuAddress检查(Check Key)约束:如 CK_stuAge外键(Foreign Key)约束:如 FK_stuNo,主键约束,1、主键约束(primary key

7、 constraint):强制数据的实体完整性。(1)每个表中只能有一个主键。(可以是多列的组合)(2)主键值必须唯一且不能为空。2、主键的添加、删除和修改操作方法有两种:使用对象资源管理器Transact-SQL语句操作法。其语法形式如下:CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED(column_name,n),主键约束各参数的说明如下constraint_name:用于指定约束的名称,约束的名称在数据库中应该是唯一的。如果不指定,则系统会自动生成一个约束名。CLUSTERED|NONCLUSTERED:用于指定

8、索引的类型,即聚簇索引或者非聚簇索引,CLUSTERED为默认值。column_name:用于指定主键的列名。主键最多由16个列组成。例题创建产品信息表(products),指定产品编号为主键值,并且创建一个聚簇索引。create table products(id char(10)not null,name char(20)not null,price money,quantity smallint null,constraint pk_id primary key clustered(id),create table products(id char(10)not null primary

9、 key,name char(20)not null,price money,quantity smallint null,),思考?在主键列输入的数值,允许为空吗?一个表可以有多个主键吗?在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?选择主键的原则最少性尽量选择单个键作为主键稳定性尽量选择数值更新少的列作为主键,唯一性约束,2.唯一性约束强制数据的实体完整性。唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值。用来限制非主键列中不允许输入重复值。使用唯一性约束的字段允许为空值(空值可出现

10、一次)。一个表中可以允许有多个唯一性约束。可以把唯一性约束定义在多个字段上。唯一性约束用于强制在指定字段上创建一个唯一性索引。缺省情况下,创建的索引类型为非聚簇索引。使用对象资源管理器创建唯一性约束Transact-SQL语句操作。唯一性约束与主键约束的区别?,alter table studentadd constraint uq_name unique(sname),if exists(select*from sysobjects where name=products)drop table productscreate table products(id char(10)not null

11、 primary key,name char(20)unique,price money default,quantity smallint null)-constraint uq_sn unique(name),检查约束,3.检查约束强制数据的域完整性。检查约束使用逻辑表达式来限制表中的列可以接受哪些数据值。一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关。一个表中可以定义多个检查约束。每个CREATE TABLE语句中每个字段只能定义一个检查约束。在多个字段上定义检查约束,则必须将检查约束定义为表级约束。当执行INSERT语句或者UPDATE语句时,检查约束将

12、验证数据。检查约束中不能包含子查询。,创建检查约束常用的操作方法有两种:使用对象资源管理器Transact-SQL语句操作法。检查约束的Transact-SQL语句操作法,其语法形式如下:CONSTRAINT constraint_name CHECK NOT FOR REPLICATION(logical_expression),alter table 学生add constraint ck_bir check(出生日期=01/01/1980and 出生日期=getdate(),例:创建了一个学生信息表,其中输入性别字段值时,只能接受“F”或者“M”,并且为phonenum字段创建检查约束,

13、限制只能输入类似031180798654之类的数据,而不能随意输入其他数据。,create table aa(Id char(8),name char(8),sex char(2)check(sex in(F,M),phonenum char(20)check(phonenum like 03110-90-90-90-90-9 0-90-90-9),默认约束,4.默认约束强制数据的域完整性使用默认约束时,应该注意以下几点:每个字段只能定义一个默认约束。如果定义的缺省值长于其对应字段的允许长度,那么输入到表中的缺省值将被截断。不能加入到带有IDENTITY属性或者数据类型为timestamp的字

14、段上。如果字段定义为用户定义的数据类型,而且有一个缺省绑定到这个数据类型上,则不允许该字段有默认约束。创建默认约束常用的操作方法有两种:对象资源管理器。Transact-SQL语句操作法。,Alter table Add constrait 约束名 default 默认值 for 列名,外键约束,5.外部键约束强制参照完整性 当使用外部键约束时,应该考虑以下几个因素:外部键约束提供了字段参照完整性。外部键从句中的字段数目和每个字段指定的数据类型必须和REFERENCES从句中的字段相匹配。外部键约束不能自动创建索引,需要用户手动创建。用户想要修改外部键约束的数据,必须有对外部键约束所参考表的S

15、ELECT权限或者REFERENCES权限。参考同一表中的字段时,必须只使用REFERENCES子句,不能使用外部键子句。一个表中最多可以有31个外部键约束。在临时表中,不能使用外部键约束。主键和外部键的数据类型必须严格匹配。,创建外键约束常用的操作方法有两种:对象资源管理器Transact-SQL语句操作法CONSTRAINT constraint_nameFOREIGN KEY(column_name,n)REFERENCES ref_table(ref_column,n)例如:在“选修表”的“学号”字段上和“学生表”的“学号”字段创建外键约束,从而保证“选修表”中输入有效的“学号”值。,

16、use 学生库goalter table 选修表add constraint fk_xuanxiu foreign key(学号)references 学生表(学号)go,主表和从表,1、当主表中没有对应的记录时,不能将记录添加到从表选修表中不能出现在学生表中不存在的学号;2、不能更改主表中的值而导致从表中的记录孤立把学生表中的学号改变了,选修表中的学号也应当随之改变;3、从表存在与主表对应的记录,不能从主表中删除该行不能把有选修课程的学生信息从主表中删除了4、删除主表前,先删从表先删选修表、后删除学生表,查看约束定义,使用对象资源管理器使用系统存储过程查看,查看约束的名称、创建时间、类型等信

17、息:Sp_help 约束名称,删除约束,如果错误地添加了约束,还可以删除约束 删除约束的语法,ALTER TABLE 表名 DROP CONSTRAINT 约束名,例如:删除stuInfo表中地址默认约束ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddress,4.3 使用规则,规则是一种数据库对象,作用与check约束相同,限制取值范围。强制域的完整性。,Check约束比规则简明,可以在建表时指定,规则需单独创建然后再绑定到列上。一个列上只能应用一个规则,但却可以应用多个check约束。一个规则只需定义一次,可以被多次应用,可应用到多个表或多个列,可

18、以应用到用户定义的数据类型。,1、创建规则:CREATE RULE RULE_NAME AS CONDITION_EXPRESSION 2、绑定规则:SP_BINDRULE 规则名称,表名.字段名|自定义数据 类型名 3、解绑规则:SP_UNBINDRULE 表名.字段名|自定义 数据类型名 4、删除规则:DROP RULE 规则名称,.n,Use studentcreate rule xb_rule asxb in(男,女)gosp_bindrule xb_rule,学生表.性别,默认是一种数据库对象,它与default约束作用相同。与default约束不同的是默认对象的定义是独立于表,定义

19、一次就可以被多次应用于任意表中的一列或多列。也可以应用于用户定义的数据类型。,创建默认,4.4 使用默认,1、创建默认值:CREATE DEFAULT default_name AS condition_expression2、绑定默认值:SP_BINDEFAULT 默认名称,表名.字段 名|自定义数据类型名3、解绑默认值:SP_UNBINDEFAULT 表名.字段名|自定义数据类型名4、删除默认值:DROP DEFAULT default_name,.n,Use studentgocreate default dizhi_default1 as 石家庄gosp_bindefault dizhi_default1,学生表.家庭住址go,4.5 使用IDENTITY列,是表中的一个字段,该字段值不由用户输入,而是系统按照某种规律自动添加的。一个表中只能有一个IDENTITY列。该列数据类型可以是任何整数类型,也可是decimal和numeric数据类型,但不允许出现小数。标识种子和标识增量,1、使用对象资源管理器创建2、T-SQL语句:IDENTITY(标识种子,标识增量),

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号