第13章数据完整性(新)._第1页
第13章数据完整性(新)._第2页
第13章数据完整性(新)._第3页
第13章数据完整性(新)._第4页
第13章数据完整性(新)._第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第13章章 数据完整性数据完整性13.1 数据完整性概念数据完整性概念13.2 数据约束数据约束13.3 缺省与规则缺省与规则13.4 约束与缺省、规则比较约束与缺省、规则比较13.1 数据完整性概念数据完整性概念n什么是数据库的完整性什么是数据库的完整性n数据库的完整性是指数据的正确性和相容性数据库的完整性是指数据的正确性和相容性n正确性:数据是符合现实世界语义、反映当前正确性:数据是符合现实世界语义、反映当前实际状况的。实际状况的。n相容性:数据库同一对象在不同关系表中的数相容性:数据库同一对象在不同关系表中的数据是符合逻辑的。据是符合逻辑的。n数据库完整性是防止不合语义或不正确的数数据

2、库完整性是防止不合语义或不正确的数据进入数据库,体现了是否真实地反映现实据进入数据库,体现了是否真实地反映现实世界世界n 1.提供定义完整性约束条件的机制提供定义完整性约束条件的机制 DBMS应提供定义数据库完整性约束条件,并应提供定义数据库完整性约束条件,并把它们存入数据库中。把它们存入数据库中。n2.提供完整性检查的方法提供完整性检查的方法 检查数据是否满足完整性约束条件的机制称为检查数据是否满足完整性约束条件的机制称为完整性检查。一般在完整性检查。一般在INSERT、UPDATE、DELETE语句执行后开始检查。语句执行后开始检查。n3.违约处理违约处理 DBMS若发现用户的操作违背了完

3、整性约束条若发现用户的操作违背了完整性约束条件,就采取一定的动作以保证数据的完整性,件,就采取一定的动作以保证数据的完整性,如拒绝执行该操作,或级联执行其他操作。如拒绝执行该操作,或级联执行其他操作。DBMS维护数据库完整性的机制:维护数据库完整性的机制:数据的完整性和安全性数据的完整性和安全性n数据的完整性和安全性是两个不同数据的完整性和安全性是两个不同概念概念n数据的完整性数据的完整性防止数据库中存在不符合语义的数据,也就是防止防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据数据库中存在不正确的数据防范对象:不合语义的、不正确的数据防范对象:不合语义的、不正确的数据n数

4、据的安全性数据的安全性保护数据库防止恶意的破坏和非法的存取保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作防范对象:非法用户和非法操作完整性类型完整性类型n13.1.1 实体完整性实体完整性n13.1.2 参照完整性参照完整性n13.1.3 用户定义完整性用户定义完整性SQL完整性组件完整性组件域完整性:域完整性指列的值域的完整性。如数据类型、格式、域完整性:域完整性指列的值域的完整性。如数据类型、格式、值域范围、是否允许空值等。值域范围、是否允许空值等。13.1.1 实体完整性实体完整性n规则规则n检查和违约处理检查和违约处理nSQL Server实现实体完整性的组件实现实体

5、完整性的组件实体完整性规则实体完整性规则规则规则1 实体完整性规则(实体完整性规则(Entity Integrity) 若属性若属性A是基本关系是基本关系R的的主属性主属性,则属性,则属性A不能取不能取空值空值。例例1:单:单列列SAP (SUPERVISOR, SPECIALITY, POSTGRADUATE)POSTGRADUATE:主码(假设研究生不会重名)不能取空:主码(假设研究生不会重名)不能取空值值例例2 2:多列多列SC(S#,C#,GRADE) 属性属性S#和和C#都不能取空。都不能取空。实体完整性说明实体完整性说明(1) 实体完整性规则是针对基本关系而言的。一个基本表通实体完

6、整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。常对应现实世界的一个实体集。(2) 现实世界中的实体是可区分的,即它们具有某种唯一性现实世界中的实体是可区分的,即它们具有某种唯一性标识。标识。(3) 关系模型中以主码作为唯一性标识。关系模型中以主码作为唯一性标识。(4) 主码中的属性即主属性不能取空值。主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(在不可区分的实体,这与第(2)点相矛盾,因此这个)点相矛盾,因此这个规则称为实体完整性规则称为实体完整性实体完整性检查和

7、违约处理实体完整性检查和违约处理n插入或对主码列进行更新操作时,插入或对主码列进行更新操作时,DBMS按照实体按照实体完整性规则自动进行检查。包括:完整性规则自动进行检查。包括:n1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改检查主码值是否唯一,如果不唯一则拒绝插入或修改n2. 检查主码的各个属性是否为空,只要有一个为空就拒检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改绝插入或修改实体完整性检查和违约处理实体完整性检查和违约处理(续续)n检查记录中主码值是否唯一的一种方法是进行检查记录中主码值是否唯一的一种方法是进行全全表扫描表扫描实体完整性检查和违约处理实体完整性检查和违约

8、处理(续续)n在索引在索引中检查是否唯一。中检查是否唯一。 SQL完整性组件完整性组件nSQL Server实现实体完整性的组件实现实体完整性的组件n索引:聚集索引索引:聚集索引nUnique约束:定义非空的唯一约束约束:定义非空的唯一约束nPrimary约束:主键约束约束:主键约束nIdentity属性属性:自动增加:自动增加Identity属性属性n语法语法IDENTITY (seed , increment) nseed :加载到表中的第一个行所使用的值。:加载到表中的第一个行所使用的值。 nincrement :与前一个加载的行的标识值相加的增量值。:与前一个加载的行的标识值相加的增量

9、值。 n必须同时指定种子和增量,或者二者都不指定。必须同时指定种子和增量,或者二者都不指定。 如果如果二者都未指定,则取默认值二者都未指定,则取默认值 (1,1)n举例举例CREATE TABLE new_employees( id_num int IDENTITY (1,1), fname varchar (20), minit char(1), lname varchar(30);13.1.2 参照完整性参照完整性n关系间的引用关系间的引用n外码外码n参照完整性规则参照完整性规则1. 关系间的引用关系间的引用n在关系模型中实体及实体间的联系都是用关系来在关系模型中实体及实体间的联系都是用关

10、系来描述的,因此可能存在着关系与关系间的引用。描述的,因此可能存在着关系与关系间的引用。例例1 学生实体、专业实体学生实体、专业实体 学生(学生(学号学号,姓名,性别,姓名,性别,专业号,年龄),年龄) 专业(专业(专业号,专业名),专业名)主码主码主码主码v学生关系引用了专业关系的主码学生关系引用了专业关系的主码“专业号专业号”。v 学生关系中的学生关系中的“专业号专业号”值必须是确实存在的专业的专业号值必须是确实存在的专业的专业号 ,即,即专业专业 关系中有该专业的记录。关系中有该专业的记录。关系间的引用关系间的引用(续续)例例2 学生、课程、学生与课程之间的多对多学生、课程、学生与课程之

11、间的多对多联系联系 学生(学生(学号,姓名,性别,专业号,年龄),姓名,性别,专业号,年龄) 课程(课程(课程号课程号,课程名,学分),课程名,学分) 选修(选修(学号,课程号课程号,成绩),成绩)关系间的引用关系间的引用(续续)例例3 学生实体及其内部的一对多联系学生实体及其内部的一对多联系 学生(学生(学号学号,姓名,性别,专业号,年龄,班长),姓名,性别,专业号,年龄,班长)学学 号号姓姓 名名性性 别别专专 业业 号号年年 龄龄班班 长长801张张 三三女女0119802802李李 四四男男0120803王王 五五男男0120802804赵赵 六六女女0220805805钱钱 七七男男

12、0219v“学号学号”是主码,是主码,“班长班长”是外码,它引用了本关系的是外码,它引用了本关系的“学号学号” v“班长班长” 必须是确实存在的学生的学号必须是确实存在的学生的学号 2外码(外码(Foreign Key)n设设F是基本关系是基本关系R的一个或一组属性,但不是关系的一个或一组属性,但不是关系R的码。如果的码。如果F与基本关系与基本关系S的主码的主码Ks相对应,则相对应,则称称F是基本关系是基本关系R的的外码外码n基本关系基本关系R称称为为参照关系参照关系(Referencing Relation)n基本关系基本关系S称称为为被参照关系被参照关系(Referenced Relati

13、on) 或或目标关系目标关系(Target Relation)外码外码(续续)n例例1:学生关系的:学生关系的“专业号与专业关系的主专业号与专业关系的主码码“专业号专业号”相对应相对应n“专业号专业号”属性是学生关系的外码属性是学生关系的外码n专业关系是被参照关系,学生关系为参照关系专业关系是被参照关系,学生关系为参照关系 外码外码(续续)n例例2: 选修关系的选修关系的“学号学号” 与学生关系的主码与学生关系的主码“学号学号”相对应选修关系的相对应选修关系的“课程号课程号”与课程关系的主码与课程关系的主码“课程号课程号”相对应相对应n“学号学号”和和“课程号课程号”是选修关系的外码是选修关系

14、的外码n学生关系和课程关系均为被参照关系学生关系和课程关系均为被参照关系n选修关系为参照关系选修关系为参照关系 外码外码(续续)n例例3:“班长班长”与本身的主码与本身的主码“学号学号”相对应相对应n“班长班长”是外码是外码n学生关系既是参照关系也是被参照关系学生关系既是参照关系也是被参照关系 外码外码(续续)n关系关系R和和S不一定是不同的关系不一定是不同的关系n目标关系目标关系S的主码的主码Ks 和参照关系的外码和参照关系的外码F必须定义必须定义在同一个(或一组)域上在同一个(或一组)域上n外码并不一定要与相应的主码同名外码并不一定要与相应的主码同名 当外码与相应的主码属于不同关系时,往往

15、取相当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别同的名字,以便于识别3. 参照完整性规则参照完整性规则规则规则2.2 参照完整性规则参照完整性规则 若属性(或属性组)若属性(或属性组)F是基本关系是基本关系R的外码它与基的外码它与基本关系本关系S的主码的主码Ks相对应(基本关系相对应(基本关系R和和S不一定不一定是不同的关系),则对于是不同的关系),则对于R中每个元组在中每个元组在F上的值上的值必须为:必须为:n或者取空值(或者取空值(F的每个属性值均为空值)的每个属性值均为空值)n或者等于或者等于S中某个元组的主码值中某个元组的主码值 这条规则的实质是什么?这条规则的实质是

16、什么? “不允许引用不存在的实体不允许引用不存在的实体”。参照完整性规则参照完整性规则(续续)例例1:学生关系中每个元组的学生关系中每个元组的“专业号专业号”属性只取两类属性只取两类值:值:(1)空值空值,表示尚未给该学生分配专业,表示尚未给该学生分配专业(2)非空值,这时该值必须)非空值,这时该值必须是专业关系中某个是专业关系中某个元组的元组的“专业号专业号”值值,表示该学生不可能分配,表示该学生不可能分配一个不存在的专业一个不存在的专业参照完整性规则参照完整性规则(续续)例例2 :选修(选修(学号学号,课程号课程号,成绩),成绩)“学号学号”和和“课程号课程号”可能的取值可能的取值 : (

17、1)选修关系中的主属性,不能取空值)选修关系中的主属性,不能取空值 (2)只能取相应被参照关系中已经存在的主码值)只能取相应被参照关系中已经存在的主码值参照完整性规则参照完整性规则(续续)例例3:学生(学生(学号学号,姓名,性别,专业号,年龄,班长),姓名,性别,专业号,年龄,班长)“班长班长”属性值可以取两类值:属性值可以取两类值:(1)空值,表示该学生所在班级尚未选出班长)空值,表示该学生所在班级尚未选出班长(2)非空值,该值必须是本关系中某个元组的学号)非空值,该值必须是本关系中某个元组的学号值值13.1.3 用户定义的完整性用户定义的完整性n针对某一具体关系数据库的约束条件,反针对某一

18、具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的映某一具体应用所涉及的数据必须满足的语义要求语义要求n关系模型应提供定义和检验这类完整性的关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能而不要由应用程序承担这一功能13.2 数据约束数据约束n13.2.1 13.2.1 列级约束与表级约束列级约束与表级约束n13.2.2 13.2.2 主键约束主键约束n13.2.3 13.2.3 唯一约束唯一约束n13.2.4 13.2.4 外键约束外键约束n13.2.5 13.2.5 缺省约束缺省约束n

19、13.2.6 CHECK13.2.6 CHECK约束约束n13.2.7 13.2.7 启用和禁用约束启用和禁用约束使用使用sys.key_constraints目录视图目录视图查看数据库约束查看数据库约束2022年5月24日第30页13.2.1 列级约束与表级约束n列约束被指定为列定义的一部分,并且仅列约束被指定为列定义的一部分,并且仅适用于指定的单个列。适用于指定的单个列。n表约束的声明与列的定义无关,可以适用表约束的声明与列的定义无关,可以适用于表中一个以上的列。于表中一个以上的列。n当一个约束中必须包含一个以上的列时,必须当一个约束中必须包含一个以上的列时,必须使用表约束。例如,如果一个

20、表的主键内有两使用表约束。例如,如果一个表的主键内有两个或两个以上的列,则必须使用表约束将这两个或两个以上的列,则必须使用表约束将这两列加入主键内。列加入主键内。列级约束与表级约束举例CREATE TABLE table7 ( c1 int, c2 int, c3 char(5), c4 char(10),CONSTRAINT c1 PRIMARY KEY(c1,c2)CREATE TABLE department /*部门表部门表*/( dno int PRIMARY KEY, /*部门号部门号,为主键为主键*/ dname char(20), /*部门名部门名*/)表级约束表级约束列级约束

21、列级约束13.2.2 主键约束n作为表定义的一部分在创建表时创建。作为表定义的一部分在创建表时创建。n添加到还没有添加到还没有PRIMARY KEY约束的表中(一个约束的表中(一个表只能有一个表只能有一个PRIMARY KEY约束)。约束)。n如果已有如果已有PRIMARY KEY约束,则可对其进行修约束,则可对其进行修改或删除。例如,可以使表的改或删除。例如,可以使表的PRIMARY KEY约约束引用其他列,更改列的顺序、索引名、聚集选束引用其他列,更改列的顺序、索引名、聚集选项或项或PRIMARY KEY约束的填充因子。定义了约束的填充因子。定义了PRIMARY KEY约束的列的列宽不能更

22、改。约束的列的列宽不能更改。13.2.3 唯一约束 UNIQUEnUNIQUE约束在列集内强制执行值的唯一约束在列集内强制执行值的唯一性。对于性。对于UNIQUE约束中的列,表中不允约束中的列,表中不允许有两行包含相同的非空值。主键也强制许有两行包含相同的非空值。主键也强制执行唯一性,但主键不允许空值,而且每执行唯一性,但主键不允许空值,而且每个表中主键只能有一个,但是个表中主键只能有一个,但是UNIQUE列列却可以有多个。却可以有多个。nUNIQUE约束优先于唯一索引。约束优先于唯一索引。使用使用ALTER TABLE语句定义语句定义UNIQUE约束约束n在students表中,主键约束创建

23、在studentID列上,如果这时还需要保证该表中的存储身份证号的SSL列的数据是唯一的,可以使用UNIQUE约束。一般地,把UNIQUE约束称为候选的主键约束。2022年5月24日第35页13.2.4 外键约束 nFOREIGN KEY约束称为外键约束,用于标识表之间的关约束称为外键约束,用于标识表之间的关系,以强制参照完整性,即为表中一列或者多列数据提供系,以强制参照完整性,即为表中一列或者多列数据提供参照完整性。参照完整性。n一个表中最多可以有一个表中最多可以有253个可以参照的表,因此每个表最多个可以参照的表,因此每个表最多可以有可以有253个个FOREIGN KEY约束。约束。n在在

24、FOREIGN KEY约束中,只能参照同一个数据库中的表,约束中,只能参照同一个数据库中的表,而不能参照其他数据库中的表。而不能参照其他数据库中的表。nFOREIGN KEY子句中的列数目和每个列指定的数据类型子句中的列数目和每个列指定的数据类型必须和必须和REFERENCE子句中的列相同。子句中的列相同。nFOREIGN KEY约束不能自动创建索引。约束不能自动创建索引。n参照同一个表中的列时,必须只使用参照同一个表中的列时,必须只使用REFERENCE子句,子句,而不能使用而不能使用FOREIGN KEY子句。子句。n在临时表中,不能使用在临时表中,不能使用FOREIGN KEY约束。约束

25、。外键约束的基本语法形式外键约束的基本语法形式n在在CREATE TABLE语句中定义列的外键约束语句中定义列的外键约束FOREIGN KEY REFERENCES 外表名(参照列)外表名(参照列) ON DELETE NO ACTION|CASCADE|SET NULL| SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL| SET DEFAULTn在在ALTER TABLE语句中定义列的外键约束语句中定义列的外键约束FOREIGN KEY (COLUMN) REFERENCES 外表名(参照列)外表名(参照列) ON DELETE NO ACT

26、ION|CASCADE|SET NULL| SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL| SET DEFAULTn在在CREATE TABLE语句中定义多列的外键约束语句中定义多列的外键约束FOREIGN KEY (COLUMN_list) REFERENCES 外表名(参照列名表)外表名(参照列名表) ON DELETE NO ACTION|CASCADE|SET NULL| SET DEFAULT ON UPDATE NO ACTION|CASCADE|SET NULL| SET DEFAULTUSE testGOCREATE TABL

27、E worker/*职工表职工表*/(no int PRIMARY KEY, /*编号编号,为主键为主键*/name char(8),/*姓名姓名*/sex char(2),/*性别性别*/dno int /*部门号部门号*/FOREIGN KEY REFERENCES department(dno)ON DELETE NO ACTION, /*删除主键数据时外键表的行为删除主键数据时外键表的行为*/address char(30)/*地址地址*/)GO该程序使用该程序使用FOREIGN KEY子句在子句在worker表中建立了表中建立了一个删除约束,即一个删除约束,即worker表的表的dn

28、o列(是一个外键)与列(是一个外键)与department表的表的dno列关联。如果外键表有数据,则删除失列关联。如果外键表有数据,则删除失败,败, NO ACTION是默认选项是默认选项【例】 在表定义时创建外键在表定义时创建外键在在ALTER TABLE语句中定义外语句中定义外键约束键约束2022年5月24日第39页13.2.5 缺省约束 DEFAULTn缺省约束是加在列上的缺省值。缺省值是指当对缺省约束是加在列上的缺省值。缺省值是指当对列数据进行列数据进行 INSERT操作时系统自动提供的值。操作时系统自动提供的值。n列的缺省约束值可以是常数或系统函数列的缺省约束值可以是常数或系统函数n

29、列的缺省约束值也可以是事先定义的缺省,在创列的缺省约束值也可以是事先定义的缺省,在创建数据表的时候定义缺省约束时有两种方法:建数据表的时候定义缺省约束时有两种方法:n用界面操作方便用界面操作方便n用命令操作需要两步:第一步定义表结构,第二步绑用命令操作需要两步:第一步定义表结构,第二步绑定缺省定缺省列的缺省约束值是常数的情况CREATE TABLEjsy_temp4 (驾照号驾照号intIDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,姓名姓名 varchar(8) NOT NULL,是否见习是否见习 varchar(20) DEFAULT(是是),身份

30、证号身份证号 char(18) NOT NULL UNIQUE NONCLUSTERED)使用使用ALTER TABLE语句定义语句定义DEFAULT约束约束2022年5月24日第42页13.2.6 CHECK约束nCHECK约束通过限制用户输入的值来约束通过限制用户输入的值来加强域完整性。它指定应用于列中输入的加强域完整性。它指定应用于列中输入的所有值的布尔(取值为所有值的布尔(取值为TRUE或或FALSE)搜)搜索条件,拒绝所有不取值为索条件,拒绝所有不取值为TRUE的值。可的值。可以为每列指定多个以为每列指定多个CHECK约束。约束。以下程序在以下程序在test数据库中创建一个数据库中创

31、建一个table6表,其中使用表,其中使用CHECK约束来限定约束来限定f2列只能为列只能为0100分:分:USE testGOCREATE TABLE table6(f1 int,f2 int NOT NULL CHECK(f2=0 AND f2=100)GO当执行如下语句:当执行如下语句:INSERT table6 VALUES(1,120)则会出现如图则会出现如图13.2所示的错误消息。所示的错误消息。例例: CHECK约束的使用方法约束的使用方法13.2.7 启用和禁用约束n(1)当建立主键约束或惟一约束时,)当建立主键约束或惟一约束时,SQL Server会在后台自动建立惟会在后台自

32、动建立惟一索引,并对表中的数据进行检查,以确保数据符合约束要求,这种一索引,并对表中的数据进行检查,以确保数据符合约束要求,这种自查过程是无法关闭。自查过程是无法关闭。n(2)当创建检查约束和外键约束时,在缺省状态下,系统也会自动)当创建检查约束和外键约束时,在缺省状态下,系统也会自动对数据进行检查,与主键约束和惟一约束不同的是,它可以取消。当对数据进行检查,与主键约束和惟一约束不同的是,它可以取消。当确认表中的数据已经符合约束条件时,就不必再浪费时间重复检查。确认表中的数据已经符合约束条件时,就不必再浪费时间重复检查。如果已确认表中的数据不符合约束条件,又不想马上清理当前的数据,如果已确认表

33、中的数据不符合约束条件,又不想马上清理当前的数据,也不必对数据进行检查,此时可以使用也不必对数据进行检查,此时可以使用WITH NOCHECK选项关闭选项关闭检查当前数据。检查当前数据。n(3)当为某列加入一个新的缺省约束,)当为某列加入一个新的缺省约束,SQL Server 并不对该列已有并不对该列已有数据进行检查,表中已有记录保留原有的取值或数据进行检查,表中已有记录保留原有的取值或NULL。当新建一列。当新建一列同时指定其缺省值时,同时指定其缺省值时,SQL Server才为已有记录填充数值。如果使用才为已有记录填充数值。如果使用了了WITH VALUES选项,选项,SQL Server

34、会把缺省值赋给新列,否则新列会把缺省值赋给新列,否则新列为为NULL。如果新列不允许为。如果新列不允许为NULL ,则无论是否指定了,则无论是否指定了WITH VALUES选项,都使用缺省值。选项,都使用缺省值。n(4)当向数据库添加大量的数据时,可以临时禁止检查约束和外键)当向数据库添加大量的数据时,可以临时禁止检查约束和外键约束。约束。使用使用WITH NOCHECK子句子句n该约束对表中已有数据不强制检查。但是,如果该约束对表中已有数据不强制检查。但是,如果以后更新表中数据要检查更新后的数据是否满足以后更新表中数据要检查更新后的数据是否满足约束。约束。第46页13.3 缺省与规则缺省与规

35、则 nSQLServer中缺省(默认值)和规则的概念中缺省(默认值)和规则的概念n缺省(默认值)是为列提供数据的一种方式,如果缺省(默认值)是为列提供数据的一种方式,如果用户进行用户进行INSERT操作时不为列输入数据,则使用操作时不为列输入数据,则使用缺省值。缺省值。n规则是当用户进行规则是当用户进行INSERT或或UPDATE操作时,对操作时,对输入列中的数据设定的取值范围。输入列中的数据设定的取值范围。n缺省与规则不是缺省与规则不是ANSI标准,一般不提倡使用,标准,一般不提倡使用,应尽可能使用约束,任何可以使用缺省与规则应尽可能使用约束,任何可以使用缺省与规则的地方都有可以使用约束。的

36、地方都有可以使用约束。13.3 缺省与规则缺省与规则 n特点特点(1)缺省与规则是数据库对象,它们是独立于表和列而缺省与规则是数据库对象,它们是独立于表和列而建立的。建立的。(2)缺省与规则建立后与列或数据类型产生关联,列和缺省与规则建立后与列或数据类型产生关联,列和数据类型就具有了缺省与规则的属性。数据类型就具有了缺省与规则的属性。(3)缺省与规则定义后,可以重复使用,可以绑定到多缺省与规则定义后,可以重复使用,可以绑定到多个列或数据类型上。个列或数据类型上。(4)缺省与规则不随表同时调入内存,当用到时才被调缺省与规则不随表同时调入内存,当用到时才被调入内存,这可能会使程序执行出现延时。入内

37、存,这可能会使程序执行出现延时。13.3 缺省与规则缺省与规则 n13.3.1 创建缺省和规则创建缺省和规则n13.3.2 绑定绑定n13.3.3 取消绑定取消绑定n13.3.4 删除缺省和规则删除缺省和规则13.3.1 创建缺省和规则CREATE DEFAULT default_name AS constant_expression其中其中default_name为缺省值对象名,为缺省值对象名, constant_expression为一个常量、数学表达式为一个常量、数学表达式或内置函数,不能引用其列或别的数据库对象。或内置函数,不能引用其列或别的数据库对象。创建缺省举例创建缺省举例/*使用

38、下面语句创建使用下面语句创建con3默认对象默认对象,其默认值为其默认值为10 */create default con3 as 10go13.3.1 创建缺省和规则CREATE RULE rule_name AS rule_conditionsn其中rule_name为规则对象名,rule_conditions为规则表达式,表示数据需满足的条件。例:创建一个名为例:创建一个名为rule1的规则,限定输入的值必须在的规则,限定输入的值必须在010之间。之间。USE test GO CREATE RULE rule1 AS c1 BETWEEN 0 and 10 GO13.3.2 绑定n绑定到绑定到某列或用户自定义某列或用户自定义的数据类型上,的数据类型上,以便它们在数据输入或修改操作中起作用。以便它们在数据输入或修改操作中起作用。n使用时要注意缺省和规则所用的数据类型使用时要注

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论