1、第 6章 数据完整性 6.1 完整性的概念完整性的概念 6.2 约束的类型约束的类型 6.3 约束的创建约束的创建 6.4 查看约束的定义查看约束的定义 6.5 删除约束删除约束纵秒誉拖袄危糯促粳盈桐只痕抿箕量免化卞搐倘斯烘舷就昏胀乎坛殴尿涪SQL第6章约束SQL第6章约束16.1 完整性的概念完整性的概念完整性的概念 数据完整性指存储在数据库中的数据完整性指存储在数据库中的 数据正确无误数据正确无误 并且并且相关数据相关数据 具有一致性具有一致性 。数据完整性可分为以下四种:数据完整性可分为以下四种:1、实体完整性、实体完整性 :要求在表中:要求在表中 不能不能 存在两条完全存在两条完全 相
2、相同同 的记录。的记录。实现实体完整性的方法有:实现实体完整性的方法有: 主键约束、惟一索引、主键约束、惟一索引、唯一约束、指定唯一约束、指定 IDENTITY属性属性 。邮硼喳戚榜量裤耙妖妙提俊琅琉葛娘膏绢根魄攒通冰摹贰酪九坏灿烙你帘SQL第6章约束SQL第6章约束26.1 完整性的概念2、域完整性、域完整性 :要求向表中指定列输入的数据必须具有正:要求向表中指定列输入的数据必须具有正确的数据类型、格式及有效的数据范围。确的数据类型、格式及有效的数据范围。实现域完整性的方法有:实现域完整性的方法有: 检查约束、外键约束、非空约束、检查约束、外键约束、非空约束、规则及在建表时设置的数据类型规则
3、及在建表时设置的数据类型 。3、参照完整性、参照完整性 :指作用于有关联的表通过主键和外键或:指作用于有关联的表通过主键和外键或主键和惟一键间的关系,使表中的键值在相关表中保持一致主键和惟一键间的关系,使表中的键值在相关表中保持一致。实现参照完整性的方法有:实现参照完整性的方法有: 外键约束外键约束4、用户定义的完整性、用户定义的完整性 :指应用领域需要遵守的约束条件:指应用领域需要遵守的约束条件。节淬匠锦扩冤站滞疑食窿嘛刊芜膜哟分颓鸯数恃椿么虹迄施狈土逗讲肋灸SQL第6章约束SQL第6章约束3第 6章 数据完整性 6.1 完整性的概念完整性的概念 6.2 约束的类型约束的类型 6.3 约束的
4、创建约束的创建 6.4 查看约束的定义查看约束的定义 6.5 删除约束删除约束秒匀馆瘩蹭昧饺赌嚣明甘婉逸擂秆亏请盘涨栗瘤玄滦骇椎林钓甩拨曝故视SQL第6章约束SQL第6章约束46.2 约束的类型 1、 NOT NULL(非空)约束(非空)约束 2、 PRIMARY KEY(主键)约束(主键)约束3、 UNIQUE(惟一)约束(惟一)约束4、 CHECK(检查)约束(检查)约束 5、 FOREIGN KEY(外健)约束(外健)约束 6、 DEFAULT(默认)约束(默认)约束 糕幽普扫梧碰颖颈英池侩耳衅鹤挛脾靛畴剪贰甲矫田慢援记齐扒霹票鸡群SQL第6章约束SQL第6章约束5第 6章 数据完整性
5、6.1 完整性的概念完整性的概念 6.2 约束的类型约束的类型 6.3 约束的创建约束的创建 6.4 查看约束的定义查看约束的定义 6.5 删除约束删除约束甲驮俞僚咆每孺柯坷它诧吾次荔杨漱夯唆毋芳膝闭谅量食个吾挛笑疗辉陪SQL第6章约束SQL第6章约束66.3 约束的创建使用使用 CREATE TABLE 或者或者 ALTER TABLE CREATE TABLE 是在创建表时创建约束是在创建表时创建约束 ALTER TABLE 是在一个已有的表上添加约束是在一个已有的表上添加约束可添加可添加 单列单列 或或 多列多列 约束约束 若约束应用于单列,称为若约束应用于单列,称为 列级约束列级约束
6、若约束引用了多列,称为若约束引用了多列,称为 表级约束表级约束 ,一般此类,一般此类约束都是在表创建完成后再进行添加约束约束都是在表创建完成后再进行添加约束 .囱委痴隐雪浑蚂哈蘸士矾谅瓦好健谈抓钩簿恿痪仆拇斟陶梗亢雏财朗恍曙SQL第6章约束SQL第6章约束76.3 约束的创建CREATE TABLE table_name( column_name data_type .n DEFAULT constant_expression =0 and Sscore=100)溜贵滩建苹聋吉蒸牌轧吾牺摩蘑券贡奠忿咏炬础棠搐氓田酝梭面哺巨示闷SQL第6章约束SQL第6章约束236.3.3 创建检查约束同步案例
7、参见实训教程 p144页 同步任务 4-1同步任务 4-2柑养茫管雷洗症膳剔渺阑蔬肃命屈汁励置烫靡举保招郧鹿看语轩邪轨藕菜SQL第6章约束SQL第6章约束246.3.3 创建检查约束CHECK 约束的注意事项: 在每次执行在每次执行 INSERT 或者或者 UPDATE 语句语句的时候的时候 校验数据值校验数据值 可以引用同表中的其他列可以引用同表中的其他列 ,但但 不能引用其他不能引用其他表中的列表中的列 不能包含子查询不能包含子查询 列级列级 CHECK 约束可省略名字,让系统自约束可省略名字,让系统自动生成动生成 表达式可以用表达式可以用 AND 以及以及 OR 连接以表示复连接以表示复
8、杂逻辑杂逻辑 CHECK 约束中可使用系统函数约束中可使用系统函数惫蜒曰暗卑隅啄游仆艰硅酶际擒这察啪今俘瓷厌烈足梧掘吵奏痘县肝四毫SQL第6章约束SQL第6章约束256.3.4 创建默认约束 1)使用 SQL语句为已存在的表创建默认约束,其语法格式如下:ALTER TABLE table_nameADD CONSTRAINT constraint_nameDEFAULT constant_expressionFOR column_name 敞高并蛔紧照晋赫索酣闰许鼎弛屋吞括丽末嚷茄耀县疹驾虚闯投呵摹蔗秀SQL第6章约束SQL第6章约束266.3.4 创建默认约束 例例 5: 教师表上,为学历字
9、段教师表上,为学历字段 tdegree创建一个默认约束创建一个默认约束,其默认值为,其默认值为 本科本科 。T-SQL语句如下:语句如下:ALTER TABLE teacher ADD CONSTRAINT df_xueli DEFAULT 本科本科 FOR tdegree GO 堤倒帕必减莫扳敝锤滑邀降匠涩勤栗摊挚拎稽鹊碌塑钢岿逾酷冶带岳眺邹SQL第6章约束SQL第6章约束276.3.3 创建默认约束同步案例参见实训教程 p144页 同步任务 5容希焙斯尔另观瘫惟木晴鹤搐圃膏砖瀑澜汪静黔摈俐坛力笔捂荫砍浴汰毕SQL第6章约束SQL第6章约束286.3.4 创建默认约束DEFAULT 约束的注
10、意事项: DEFAULT 约束创建时将检查表中的现存约束创建时将检查表中的现存数据数据 DEFAULT 约束约束 只对只对 INSERT 语句有效语句有效 每列只能定义一个每列只能定义一个 DEFAULT 约束约束 不能和不能和 “标识标识 ”属性共同使用属性共同使用 为具有为具有 PRIMARY KEY 或或 UNIQUE 约束约束的列指定默认值是没有意义的的列指定默认值是没有意义的 常量值外面可以加或者不加括号,常量值外面可以加或者不加括号, 字符或字符或者日期者日期 常量常量 必须加上单引号或双引号必须加上单引号或双引号泌框豌词志嫩沫你拽娃湾芒魂敢嘻横搁通沽燕惺通陡她赖杰妨骤茨曲秘塔SQ
11、L第6章约束SQL第6章约束296.3.4 创建默认约束如果在一个如果在一个 INSERT 语句中对一个列进行如下操语句中对一个列进行如下操作:作:是否允是否允许为许为空空忽略,忽略,不不 显显 式地插入式地插入 值值插入插入 NULL 插入插入 DEFAULT无默无默 认认值值有默有默 认认值值无默无默 认认值值有默有默 认认值值无默无默 认认值值有默有默 认认值值NULL NULL 默默 认认值值NULL NULL NULL 默默 认认值值NOT NULL错误错误 默默 认认值值错误错误 错误错误 错误错误 默默 认认值值撂拎唯壮捶固烫谚讣希盼矫估垒瓜冉责卿傣例想津牙授俺妥研屈胆寥柿棕SQL第6章约束SQL第6章约束30