约束默认和规则

合集下载

sql约束、默认和规则

sql约束、默认和规则
大型数据库——SQL Server 2000程序设计 SQL 2000程序设计 大型数据库
约束名] 约束名]
CLUSTERED|NONCLUSTERED] UNIQUE [CLUSTERED|NONCLUSTERED]
4.2.4 UNIQUE 约束Fra bibliotek大型数据库——SQL Server 2000程序设计 SQL 2000程序设计 大型数据库
4.2.1 CHECK 约束
CHECK约束用于限制输入到一列或多列的值的范围: CHECK约束用于限制输入到一列或多列的值的范围:用户 约束用于限制输入到一列或多列的值的范围 想输入的数据值如果不满足CHECK约束中的条件( CHECK约束中的条件 想输入的数据值如果不满足CHECK约束中的条件(逻辑表 达式)将无法正常输入. 达式)将无法正常输入. 使用企业管理器定义,删除CHECK约束 使用企业管理器定义,删除CHECK约束 CHECK 使用T-SQL语句创建 CHECK 约束 ( 在创建或修改表时 ) ; 语句创建CHECK 约束( 使用 T SQL 语句创建 CHECK约束 在创建或修改表时) 语法格式: 语法格式: [CONSTRAINT 约束名] 约束名] CHECK(逻辑表达式) CHECK(逻辑表达式) 使用T SQL语句删除CHECK约束 使用T-SQL语句删除CHECK约束 语句删除CHECK 语法格式: 语法格式: DROP CONSTRAINT 约束名
4.2.2 PRIMARY KEY 约束
例:创建表学生(学号,姓名,性别)的同时定义学号 创建表学生(学号,姓名,性别) 为主键. SQL语句如下: 为主键.T-SQL语句如下: 语句如下 CREATE TABLE 学生 (学号 char(8) NOT NULL CLUSTERED, CONSTRAINT pk_xs PRIMARY KEY CLUSTERED, ,性别 姓名 char(10) ,性别 char(2)) 例:为存在的表学生(学号,姓名,性别)定义学号为 为存在的表学生(学号,姓名,性别) 主键. SQL语句如下 语句如下: 主键.T-SQL语句如下: ALTER TABLE 学生 pk_xs ADD CONSTRAINT pk_xs PRIMARY KEY CLUSTERED(学号) CLUSTERED(学号) 例:删除上例建立的主键约束.T-SQL语句如下: 删除上例建立的主键约束. SQL语句如下: 语句如下 ALTER TABLE 学生 DROP CONSTRAINT pk_xs

数据库管理与开发项目教程(SQL Server 2019)第3版 项目八 实现数据完整性

数据库管理与开发项目教程(SQL Server 2019)第3版 项目八 实现数据完整性

/*定义列名、数据类型、
是否空值
[[CONSTRAINT check_name] CHECK (logical_expression)][,…n]) /*定义
CHECK约束
【例8-1】 在xs数据库中创建XSXX表,并定义CHECK约束。
10
项目8 实现数据完整性 ->任务1 实现域完整性
任务1-2 CHECK约束
项目8 实现数据完整性 ->任务1 实现域完整性
任务1-2 CHECK约束
CHECK约束实际上是字段输入内容的验证规则,表示一个字段的输入内容
必须满足CHECK约束的条件,如果不满足,数据就无法正常输入。
CHECK约束可以作为表定义的一部分在创建表时创建,也可以添加到现有表中。
表和列可以包含多个CHECK约束。允许修改或删除现有的CHECK约束。
【项目描述】
为xs数据库创建CHECK约束、规则、DEFAULT约束、默认值对象、索引、PRIMARY KEY约束、 UNIQUE约束、FOREIGN KEY约束实现数据完整性保护。

项目8 实现数据完整性
【项目分析】 项目4在数据库xs中建立了数据表,在向表中输入数据时,由于种种原因,有
时会输入无效或错误的信息。比如,对不同的学生输入了相同的学号,“性别” 字段的值输入了非法数据,相同的数据行被多次输入,学生成绩表中出现了学生 档案表中不存在的学号等。之所以会出现这些错误信息,是因为没有实现数据完 整性。为避免此类情况发生,本项目主要介绍如何通过实施数据完整性来解决上 述问题,以此保证数据输入的正确性、一致性和可靠性。
《SQL SERVER2019项目开发教程 》
项目8 实现数据完整性
项目8 实现数据完整性

第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确

第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确

第二章数据库的完整性控制数据完整性(Data Integrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。

数据完整性主要分为三类:实体完整性(Entity Integrity),参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity),其中用户定义的完整性主要包括域完整性(Domain Integrity)和其他自定义完整性。

为维护数据库德完整性,数据库管理系统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。

这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。

完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。

目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。

完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。

由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。

广义的完整性控制包括故障恢复、并发控制。

而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完整性等。

SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。

完整性控制机制应具有三个功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求书否违反了约束条件;(3)如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。

第 5章 约束、默认和规则

第 5章 约束、默认和规则
CONSTRAINT constraint_name CHECK [ NOT FOR REPLICATION ] ( logical_expression )
<
>
5.2 约束
第 5 章 约 束 、 默 认 和 规 则
【例5-3】 为专业情况表(Speciality)中的专业代码 (SpecialityID)列创建一个CHECK约束,将专业代码 限定为五位,其中第一位只能是 “a”-“z”或“A”“Z”,其它位为“0”-“9”,使用其它符号将被认为是 无效的。 USE Educational -- 选择当前数据库 GO -- 定义CHECK约束 ALTER TABLE Speciality ADD CONSTRAINT Chk_SpecialityID CHECK < ( SpecialityID LIKE '[A-Z][0-9][0-9][0-9][0-9]' ) >
5.1 数据完整性
第 5 章 约 束 、 默 认 和 规 则
5.1.1 域完整性 域完整性是指给定列的输入有效性。强制域 有效性的方法有:通过限制数据类型(包括自 定义数据类型)、格式(CHECK约束和规则)或 可能的取值范围(FOREIGN KEY约束、CHECK约 束、DEFAULT定义、NOT NULL定义和规则)来 实现。 如:性别字段只能取“男”或“女”;课程 成绩取值范围为0∽100;姓名字段不能为空; 性别字段的默认值为“男”等等。
ALTER TABLE Student /* 添加DEFAULT约束 */ ADD CONSTRAINT Default_Sex DEFAULT '男' FOR Sex
<
>
5.2 约束

数据库约束、默认、规则实验报告

数据库约束、默认、规则实验报告

实验五约束默认和规则1、约束在数据库中的应用(1)用系统存储过程sp_helpconstraint查看student表的约束。

(2)在新建查询中输入插入一个学生信息的命令:insert into student(SNO,Sname,Sex,ClsNO,StuAddr,Birthday,Height)values('19920101','王军','男','CS01','下关#','1976.12.21',1.76),观察其结果。

修改SNO的值,将其值修改为’19000001’,其他的值保持不变,再插入一次,观察其结果。

(3)修改studeng表,使用Check约束,使性别列只能接受“男”或“女”,以强制执行域数据完整性。

重做(1),观察其结果。

(4)禁止student表中的sex列上的约束:alter table student nocheck constraint ck_student(5)删除约束:alter table student drop constraint ck_xsqk。

重做(1)。

(6)利用关系图,建立student表与course表与grade表的主外键约束。

2、默认的应用(1)创建默认对象:default_birthday,默认值为’1982-1-1’。

CREATE DEFAULT default_birthday AS ‘1982-01-01’(2)利用系统存储过程sp_bindefault将default_birthday绑定到student表的Birthday列上。

(3)利用系统存储过程sp_unbindefault解除student表的Birthday列上的默认值绑定。

(4)删除默认值:DROP DEFAULT default_birthday(5)定义一个默认值为4的Default_Value,并将它绑定到course表的Credit列上,绑定后给course插入数据行,观察默认值的设置情况,使用完毕后,解除并删除绑定。

表格约束条件-概述说明以及解释

表格约束条件-概述说明以及解释

表格约束条件-范文模板及概述示例1:表格约束条件是数据表中定义的一组规则,用于限制表中数据的插入、更新和删除操作。

这些约束条件有助于确保表的数据完整性和一致性,防止不正确或无效的数据进入表中。

在数据库设计和管理中,表格约束条件是至关重要的,可以提高数据质量,并减少数据操作错误的可能性。

常见的表格约束条件包括以下几种:1. 主键约束:主键是一列或一组列,用于唯一标识表中的每一行数据。

主键约束确保主键列中的值都是唯一且非空的,避免数据重复或缺失。

主键约束是表格中最重要的约束条件之一。

2. 唯一约束:唯一约束用于确保表中某一列或组合列的值是唯一的,但可以是空值。

唯一约束可以防止重复的数据出现在该列中,但允许空值的存在。

3. 非空约束:非空约束要求某一列不允许为空值,这意味着在插入或更新数据时,该列的值不能为null。

非空约束可以提高数据的完整性,并确保必要的数据不会缺失。

4. 默认约束:默认约束指定某一列的默认值,在插入新行时,如果未提供该列的值,则将使用默认值。

默认约束可以简化数据插入操作,并确保表中的数据满足特定要求。

5. 外键约束:外键约束用于定义表之间的关联关系,确保外键列中的值必须是另一个表的主键或唯一约束列的值。

外键约束可以维护表之间的数据一致性,并提供数据的引用完整性。

表格约束条件还可以包括复杂的约束条件,如检查约束、触发器等。

检查约束用于定义列中的数据必须满足的条件,触发器用于在表的数据插入、更新或删除时自动执行一些动作。

在设计数据库表格时,需要根据业务需求和数据的特性合理定义表格约束条件。

通过正确使用表格约束条件,可以有效地管理和维护表中的数据,提高数据质量和可靠性。

示例2:表格约束条件是指在数据库表中对特定字段值进行限制或规范的条件。

这些约束条件可以确保数据的一致性、完整性和准确性。

在数据库设计和管理中,使用表格约束条件可以有效地对数据进行验证和保护,从而提高数据的质量和可靠性。

常见的表格约束条件包括以下几种:1. 主键约束:主键是用来唯一标识表中每一行记录的字段或字段组合。

数据完整性之默认值约束及默认值对象

数据完整性之默认值约束及默认值对象
默认值对象是数据库对象之一在一个数据库内定义可绑定到一个用户定义数据类型或库中某个表的字段可重复利用
LOGO
数据完整性
之域完整性的实现
域完整性的实现
实现域完整性通过—— CHECK约束 规则 默认值约束 默认值对象
默认值约束及默认值对象
可以为字段定义默认值,方便用户的使用。通过 两种方式实现: (1)在创建表或修改表时,定义默认值约束。 (2)先定义默认值对象,然后将该对象绑定到 表的相应字段。
【例】对于前面所述的XSDA表中的民族字段可用如下程序实现默认 值设置为“汉”。 USE XS GO CREATE DEFAULT mz_default AS '汉' GO EXEC sp_bindefault 'mz_default1','XSDA.民族' GO 【例】在XS数据库中创建名为rxdate的默认值对象(取值为当前系 统日期),然后将其绑定到XSXX表(例5-1中创建)的入学日期列。 USE XS GO CREATE DEFAULT rxdate AS getdate() GO EXEC sp_bindefault 'rxdate','XSXX.入学日期' GO
默认值约束
1.默认值约束的定义及删除 (1)定义 方法一:通过企业管理器实现 方法二:SQL语句实现创建表时定义一个字段的默认值约束 CREATE TABLE table_name /*指定表名 (column_name datatype NOT NULL | NULL [DEFAULT constraint_expression] /*默认值约束 [,…n]) 说明: constraint_expression表达式为默认值约束表 达式,此表达式只能是常量、系统函数或NULL。对于 timestamp或带IDENTITY属性的字段不能定义默认值 约束。参考:

SQL建立与使用默认值、条件约束及规则

SQL建立与使用默认值、条件约束及规则
cust_phone char(10) NULL
)
GO
您也可以在定义了所有数据表的数据行后,再指定PRIMARY KEY条件约束。数据行名称必须在括号中,并在CONSTRAINT后指定,语法如下所示:
CREATE TABLE customer
(
first_name char(20) NOT NULL,
mid_init char(1) NULL,
last_name char(20) NOT NULL,
SSN char(11),
cust_phone char(10) NULL,
CONSTRAINT PK_SSN PRIMARY KEY (SSN)
GO
要用T-SQL来修改数据行或数据表中已有的UNIQUE条件约束,必须先删除条件约束再重新建立
主索引键
CREATE TABLE customer
(
first_name char(20) NOT NULL,
mid_init char(1) NULL,
)
GO
以下为替customer资料表新增PRIMARY KEY
ALTER TABLE customer
ADD CONSTRAINT PK_SSN PRIMARY KEY CLUSTERED (SSN)
GO
要删除PRIMARY KEY条件约束,须使用ALTER TABLE命令和DROP CONSTRAINT陈述式
REFERENCES items(item_id)
)
GO
下面先删除inventory数据表的旧条件约束,然后新增条件约束的命令:
GO
一旦删除了预设对象,就无法再取回。如果要再次使用,必须使用CREATE DEFAULT重新建立对象。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
句:PRIMARY KEY(主码属性名表)。
SQL Server 2000程序设计
(1)属性后增加关键字定义 CREATE TABLE StudentInfo ( StudentID char(8) PRIMARY KEY, StudentName varchar(10), StudentSex bit );
SQL Server 2000程序设计
4.1 数据完整性
在SQL SERVER2000里,我们可以采取许多方法保证各种 完整性: 实体完整性 通过建立唯一索引、PRIMARY KEY约束、 UNIQUE约束、IDENTITY属性等来强制主键的唯一性。 域完整性 强制域有效性可以通过限制数据类型、 CHECK 约 束 和 规 则 、 FOREIGN KEY、DEFAULT、NOT NULL 定义实现。 参照完整性 通过FOREIGN KEY和CHECK约束来实现。
(职工号 char(8) NOT NULL, 姓名 char(10) , 身份证号 char(18) NULL CONSTRAINT uni_sfz UNIQUE )
例:为存在的表职工(职工号,姓名,身份证号)定义身份证号取 值唯一的约束。 T-SQL语句如下: ALTER TABLE 职工
ADD CONSTRAINT uni_sfz UNIQUE NONCLUSTERED(身份证号)
SQL Server 2000程序设计
用户定义完整性
SQL提供非空约束、对属性的CHECK约束、对元组的CHECK约 束、触发器等来实现用户的完整性要求。
例:基于元组的约束 CREATE TABLE salary ( Eno char(4), Basepay decimal(7, 2), Insure decimal(7, 2), Fund decimal(7, 2), CHECK (Insure + Fund < Basepay) ); 上面例子中,CHECK约束涉及到表中多个属性,为元组约束。
SQL Server 2000程序设计
例:通过主码来实现实体完整性
一旦某个属性或属性组被定义为主码,该 主码的每个属性就不能为空值,并且在表 中不能出现主码值完全相同的两个记录。
有两种定义主码的方法:
– 一种是在属性后增加关键字PRIMARY KEY , – 另一种是在属性表中加入额外的定义主码的子
SQL Server 2000程序设计
4.2 约束
设计数据库时要识别数据的有效值,并决定如何 强制实现列中数据的完整性。SQL SERVER 2000提供 多种强制列中数据完整性的机制:
CHECK约束 PRIMARY KEY约束 FOREIGN KEY约束 UNIQUE约束 DEFAULT约束
例:为存在的表成绩(学号,课程号,成绩),定义学号为外键。 T-SQL语句如下: ALTER TABLE 成绩 ADD CONSTRAINT fk_cj
Foreign Key (学号) References 学生(学号)
例:删除上例建立的主键约束。T-SQL语句如下: ALTER TABLE 成绩
DROP CONSTRAINT fk_cj
ALTER TABLE 学生 ADD CONSTRAINT pk_xs PRIMARY KEY CLUSTERED(Sno)
例:删除上例建立的主键约束。T-SQL语句如下:
ALTER TABLE 学生 DROP CONSTRAINT pk_xs
SQL Server 2000程序设计
4.2.3 FOREIGN KEY约束
PRIMARY KEY [CLUSTERED|NONCLUSTERED] 使用T-SQL语句删除PRIMARY KEY约束 语法格式: DROP CONSTRAINT 约束名
SQL Server 2000程序设计
4.2.2 PRIMARY KEY 约束
例 : 创 建 表 学 生信息 ( 学号Sno,姓名 Sname, 性别 Ssex,年龄Sage,系别Sdept)的同时定义学号为主键。TSQL语句如下: CREATE TABLE 学生
SQL Server 2000程序设计
4.3 默认
创建默认对象 绑定默认对象 删除绑定 删除默认对象
SQL Server 2000程序设计
4.3 默认
默认是一种数据库对象,可以绑定到一列或多列上, 作用与DEFAULT约束相似,在插入数据行时,为没有指定 数据的列提供事先定义的默认值。
DROP CONSTRAINT ck_cj
SQL Server 2000程序设计
4.2.2 PRIMARY KEY 约束
通过主键可以强制表的实体完整性。主键不允许空值,且 不同两行的键值不能相同,即主键可以唯一标识单个行。 使用企业管理器定义、删除PRIMARY KEY约束 使用T-SQL语句创建PRIMARY KEY约束(创建/修改表时) 语法格式: [CONSTRAINT 约束名]
(Sno char(8) NOT NULL, Cno char(3) NOT NULL, Grade tinyint NULL CONSTRAINT ck_cj CHECK(Grade>=0 and Grade<=100))
例:为存在的关系表SC(学号Sno,课程号Cno,成绩Grade )定义 CHECK约束要求成绩的范围为0~100。T-SQL语句如下: ALTER TABLE SC ADD CONSTRAINT ck_cj CHECK(Grade>=0 and Grade<=100) 例:删除上例建立CHECK约束。T-SQL语句如下: ALTER TABLE 成绩
(Sno char(8) NOT NULL CONSTRAINT pk_xs PRIMARY KEY CLUSTERED, Sname char(10) , Ssex char(2) Sage int Sdept char(20))
例:表学生信息(学号Sno,姓名Sname,性别Ssex,年 龄Sage,系别Sdept)定义学号为主键。T-SQL语句如下:
DEFAULT 默认约束值 FOR 列名 使用T-SQL语句删除DEFAULT约束 语法格式: DROP CONSTRAINT 约束名
SQL Server 2000程序设计
4.2.5 DEFAULT 约束
例:创建表学生(学号,姓名,性别)的同时定义性别的默认值为 ‘男’。T-SQL语句如下: CREATE TABLE 学生
2)加入额外的定义主码的子句 CREATE TABLE StudentInfo ( StudentID char(8), StudentName varchar(10), StudentSex bit, PRIMARY KEY(StudentID) );
如果表的主码只含有单个属性,上面的两种方法都可 以使用。如果主码由多个属性组成,只能使用第二种 方法
SQL Server 2000程序设计
4.2.1 CHECK 约束
CHECK约束用于限制输入到一列或多列的值的范围:用户 想输入的数据值如果不满足CHECK约束中的条件(逻辑表 达式)将无法正常输入。 使用企业管理器定义、删除CHECK约束 使用T-SQL语句创建CHECK约束(在创建或修改表时); 语法格式: [CONSTRAINT 约束名]
CHECK(逻辑表达式) 使用T-SQL语句删除CHECK约ቤተ መጻሕፍቲ ባይዱ 语法格式: DROP CONSTRAINT 约束名
SQL Server 2000程序设计
4.2.1 CHECK 约束
例:创建关系表SC(学号Sno,课程号Cno,成绩Grade)的同时定 义CHECK约束要求成绩的范围为0~100。T-SQL语句如下: CREATE TABLE SC
通过外键可以建立和强制主表和从表的参照完整性,即 从表的外键要么为空,要么等于主表中已存在的主键值。 使用企业管理器定义、删除FOREIGN KEY约束 使用T-SQL语句创建FOREIGN KEY约束(创建/修改表时) 语法格式: [CONSTRAINT 约束名]
FOREIGN KEY (从表外键) REFERENCES 主表(主表主键) 使用T-SQL语句删除FOREIGN KEY约束 语法格式: DROP CONSTRAINT 约束名
例:删除上例建立的主键约束。T-SQL语句如下: ALTER TABLE 职工
DROP CONSTRAINT uni_sfz
SQL Server 2000程序设计
4.2.5 DEFAULT 约束
若将表中某列定义了DEFAULT约束后,用户在插入新的数 据行时,如未指定该列值,系统自动将该列值赋为默认 值(默认值可以是空值)。 使用企业管理器定义、删除DEFAULT约束 使用T-SQL语句创建DEFAULT约束(创建/修改表时) 语法格式: [CONSTRAINT 约束名]
SQL Server 2000程序设计
4.2.3 FOREIGN KEY约束
例:创建表成绩(学号,课程号,成绩)的同时定义学号为外键。TSQL语句如下: CREATE TABLE 成绩
(学号 char(8) NOT NULL Foreign Key References 学生(学号),
课程号 char(3) , 成绩 tinyint )
UNIQUE [CLUSTERED|NONCLUSTERED](列名…) 使用T-SQL语句删除UNIQUE约束 语法格式: DROP CONSTRAINT 约束名
SQL Server 2000程序设计
4.2.4 UNIQUE 约束
例:创建表职工(职工号,姓名,身份证号)的同时定义身份证号 取值唯一。T-SQL语句如下: CREATE TABLE 职工
SQL Server 2000程序设计
通过外码来实现参照完整性
在CREATE TABLE 语句的属性清单后,加上外部码 的说明子句 格式为:FOREIGN (<属性名表>)REFERENCES<父 表名>(<属性名表>)
相关文档
最新文档