第5章 数据库完整性约束总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
完整性约束与对象
约束是SQL Server提供的自动保持数据库完整性的一种方法,它通过限 制字段中数据、记录中数据和表之间的数据来保证数据的完整性。 在SQL SERVER中,对于基本表的约束分为列约束和表约束。 列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其
他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,
通过数据库完整性来解决这个问题。
什么是数据库完整性
数据库的完整性是指数据的正确性和相容性
数据库完整性是防止不合语义或不正确的数据 进入数据库
完整性体现了是否真实地反映现实世界 例:
学生的年龄必须是整数,取值范围为14-29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;
不包括在列定义中,通常用于对多个列一起进行约束,与列定义用“, ”分隔,定义表约束时必须指出要约束的那些列的名称。
完整性约束与对象 在SQL Server 2008中有6种约束和2种对象:
类型 约束关键字
PRIMARY KEY
名称
主键约束 惟一约束
外键约束 检查约束
描述
唯一标识每一行 防止非主键重复 定义值与同一个表或另一个表的 主键值匹配的一列或多列组合
第5章
数据库完整性
场景:
学校的学籍管理办公室数据库管理员抱怨,每次都有学生输入了错 误的数据,如:错误的专业名称、和学籍档案不一致的姓名、错误的导
师名称等等,有时也会因网络超时,相同的信息重复的输入多次,这样
会增加了更多的管理工作。 若你是学校的数据库管理人员认为可由什么方法解决这个问题,提
高效率呢?
5.2 UNIQUE约束
创建惟一性约束的方法有两种:通过 SQL Server 管理平台可以完成 创建和修改惟一性约束的操作;使用 Transact-SQL 语句完成惟一性约束
的操作。
(1)通过SQL Server管理平台可以完成创建和修改惟一性约束的操作
Hale Waihona Puke Baidu
5.2 UNIQUE约束
使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下: • UNIQUE • CONSTRAINT constraint_name UNIQUE ( column_name )
• 5.1 PRIMARY KEY 约束 PRIMARY KEY 约束用于定义基本表的主键,它是惟一确定表中每一条记 录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。 PRIMARY KEY 与 UNIQUE 约束类似,通过建立唯一索引来保证基本 表在主键列取值的唯一性,但它们之间存在着很大的区别:
• 5.1 PRIMARY KEY 约束 主键的创建操作方法有两种:SQL Server管理平台操作法和TransactSQL 语句操作法。 (1) SQL Server管理平台操作法(如图示) (2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下: • PRIMARY KEY • CONSTRAINT constraint_name PRIMARY KEY ( column_name )
• 5.1 PRIMARY KEY 约束 (2)举例: 建立一个SCORE表,包括:SNO、CNO和GRADE,定义SNO,CNO共同 组成SCORE的主键。
• 5.1 PRIMARY KEY 约束 (2)举例: 建立一个SCORE表,包括:SNO、CNO和GRADE,定义SNO,CNO共同组成
①一个表只能有一个 PRIMARY KEY 约束 ,但可定义多个UNIQUE约束;
②对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个 列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。
注意:不能为同一个列或一组列既定义UNIQUE约束,又定义
PRIMARY KEY约束; PRIMARY KEY既可用于列约束,也可用于表约束。
举例:建立Department表, dno和dname 两列均不为空,后者必 须唯一。 CREATE TABLE Department (dno char(10) NOT NULL, dname char(15) NOT NULL UNIQUE );
当使用惟一性约束时,需要考虑以下几个因素:
•使用惟一性约束的字段允许为空值; •一个表中可以允许有多个惟一性约束;
•可以把惟一性约束定义在多个字段上;
•惟一性约束用于强制在指定字段上创建一个惟一性索引; •默认情况下,创建的索引类型为非聚集索引。 创建惟一性约束的方法有两种:通过 SQL Server 管理平台可以完成 创建和修改惟一性约束的操作;使用 Transact-SQL 语句完成惟一性约束 的操作。 (1)通过SQL Server管理平台可以完成创建和修改惟一性约束的操作
SCORE的主键。
CREATE TABLE SCORE
(SNO CHAR(10) NOT NULL,
CNO CHAR(10) NOT NULL, GRADE NUMERIC(9), CONSTRAINT SC_PRIM PRIMARY KEY (SNO,CNO) );
5.2 UNIQUE约束
惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止 在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自 动为唯一键建立唯一索引,从而保证了唯一键的唯一性。
DBMS维护数据库完整性的机制:
1.提供定义完整性约束条件的机制
DBMS应提供定义数据库完整性约束条件,并把它们存入 数据库中。
2.提供完整性检查的方法
检查数据是否满足完整性约束条件的机制称为完整性检查 。一般在INSERT、UPDATE、DELETE语句执行后开始 检查。
3.违约处理
DBMS若发现用户的操作违背了完整性约束条件,就采取 一定的动作以保证数据的完整性,如拒绝执行该操作,或 级联执行其他操作。
指定列的允许值
实体
UNIQUE
引用
FOREIGN KEY CHECK
域
对象
DEFAULT NULL DEFAULT RULE
默认值约束 指定列的默认值 空值约束 默认值对象 规则对象 指定是否允许为NULL
完整性约束
完整性约束的基本语法格式为: [CONSTRAINT constraint_name(约束名)] <约束类型> 约束不指定名称时,系统会给定一个名称。