版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 约束、默认和规则,数据完整性 约束【CONSTRAINT】 默认【DEFAULT】 规则【RULE】,4.1 数据完整性,数据完整性就是存储在数据库中的数据的一致性和正确性。 根据数据完整性措施所作用的数据库对象和范围不同,数据完整性分为: 实体完整性 又称为行完整性,即数据库中的所有行都具 有一个非空且没有重复的主键值。 域完整性 又叫列完整性,以保证列数据的输入具有正 确的数据类型、格式和有效的数据范围。 参照完整性 又叫引用完整性,旨在保证主表和从表数据 的一致性。 用户定义完整性 用户定义的不属于以上完整性的特定规 则。,4.1 数据完整性,在SQL SERVER2000里,我
2、们可以采取许多方法保证各种完整性: 实体完整性 通过建立唯一索引、PRIMARY KEY约束、 UNIQUE约束、IDENTITY属性等来强制主键 的唯一性。 域完整性 强制域有效性可以通过限制数据类型、 CHECK 约束和规则、FOREIGN KEY、 DEFAULT、NOTNULL定义实现。 参照完整性 通过FOREIGN KEY和CHECK约束来实现。,4.2 约束【CONSTRAINT】,实质:强制实行的应用规则 功能:通过限制列中数据、行中数据和表之间数 据来保证数据的完整性 应用方法:在CREATE TABLE语句中声明 在ALTER TABLE语句中添加、删除 当表被删除时,所带
3、的 约束定义也 随之被删除,4.2 约束【CONSTRAINT】,实现约束的五种方式: CHECK约束 PRIMARY KEY约束 FOREIGN KEY约束 UNIQUE约束 DEFAULT约束,4.2.1 CHECK 约束,CHECK约束用于限制输入到一列或多列的值的范围:用户想输入的数据值如果不满足CHECK约束中的条件(逻辑表达式)将无法正常输入。 使用企业管理器定义、删除CHECK约束 使用T-SQL语句创建CHECK约束(在创建或修改表时); 语法格式:CONSTRAINT 约束名 CHECK(逻辑表达式) 使用T-SQL语句删除CHECK约束 语法格式:DROP CONSTRAI
4、NT 约束名,4.2.1 CHECK 约束,例:创建表成绩(学号,课程号,成绩)的同时定义CHECK约束要求 成绩的范围为0100。T-SQL语句如下: CREATE TABLE 成绩 (学号char(8) NOT NULL, 课程号char(3) NOT NULL, 成绩tinyint NULL CONSTRAINT ck_cj CHECK(成绩=0 and成绩=0 and成绩=100) 例:删除上例建立CHECK约束。T-SQL语句如下: ALTER TABLE 成绩 DROP CONSTRAINT ck_cj,4.2.2 PRIMARY KEY 约束,通过主键可以强制表的实体完整性。主键
5、不允许空值,且不同两行的键值不能相同,即主键可以唯一标识单个行。 使用企业管理器定义、删除PRIMARY KEY约束 使用T-SQL语句创建PRIMARY KEY约束(创建/修改表时) 语法格式:CONSTRAINT 约束名 PRIMARY KEY CLUSTERED|NONCLUSTERED 使用T-SQL语句删除PRIMARY KEY约束 语法格式:DROP CONSTRAINT 约束名,4.2.2 PRIMARY KEY 约束,例:创建表学生(学号,姓名,性别)的同时定义学号 为主键。T-SQL语句如下: CREATE TABLE 学生 (学号char(8) NOT NULL CONST
6、RAINT pk_xs PRIMARY KEY CLUSTERED, 姓名char(10) ,性别 char(2) 例:为存在的表学生(学号,姓名,性别)定义学号为主键。T-SQL语句如下: ALTER TABLE 学生 ADD CONSTRAINT pk_xs PRIMARY KEY CLUSTERED(学号) 例:删除上例建立的主键约束。T-SQL语句如下: ALTER TABLE 学生 DROP CONSTRAINT pk_xs,聚集成群的,4.2.3 FOREIGN KEY约束,通过外键可以建立和强制主表和从表的参照完整性,即从表的外键要么为空,要么等于主表中已存在的主键值。 使用企业
7、管理器定义、删除FOREIGN KEY约束 使用T-SQL语句创建FOREIGN KEY约束(创建/修改表时) 语法格式:CONSTRAINT 约束名 FOREIGN KEY (从表外键) REFERENCES 主表(主表主键) 使用T-SQL语句删除FOREIGN KEY约束 语法格式:DROP CONSTRAINT 约束名,4.2.3 FOREIGN KEY约束,例:创建表成绩(学号,课程号,成绩)的同时定义学号为外键。 T- SQL语句如下: CREATE TABLE 成绩 (学号char(8) NOT NULL Foreign Key References 学生(学号), 课程号cha
8、r(3) , 成绩 tinyint ) 例:为存在的表成绩(学号,课程号,成绩),定义学号为外键。 T-SQL语句如下: ALTER TABLE 成绩 ADD CONSTRAINT fk_cj Foreign Key (学号) References 学生(学号) 例:删除上例建立的主键约束。T-SQL语句如下: ALTER TABLE 成绩 DROP CONSTRAINT fk_cj,4.2.4 UNIQUE 约束,UNIQUE约束用于确保非主键列的取值的唯一性,保证实体完整性;且每个UNIQUE约束要建立一个唯一索引;一个表可有多个UNIQUE约束;可用于定义允许空值的列。 使用企业管理器定
9、义、删除UNIQUE约束 使用T-SQL语句创建UNIQUE约束(创建/修改表时) 语法格式:CONSTRAINT 约束名 UNIQUE CLUSTERED|NONCLUSTERED (列名) 使用T-SQL语句删除UNIQUE约束 语法格式:DROP CONSTRAINT 约束名,4.2.4 UNIQUE 约束,例:创建表职工(职工号,姓名,身份证号)的同时定义身份证号 取值唯一。T-SQL语句如下: CREATE TABLE 职工 (职工号char(8) NOT NULL, 姓名char(10) , 身份证号 char(18) NULL CONSTRAINT uni_sfz UNIQUE
10、) 例:为存在的表职工(职工号,姓名,身份证号)定义身份证号取 值唯一的约束。 T-SQL语句如下: ALTER TABLE 职工 ADD CONSTRAINT uni_sfz UNIQUE NONCLUSTERED(身份证号) 例:删除上例建立的主键约束。T-SQL语句如下: ALTER TABLE 职工 DROP CONSTRAINT uni_sfz,4.2.5 DEFAULT 约束,若将表中某列定义了DEFAULT约束后,用户在插入新的数据行时,如未指定该列值,系统自动将该列值赋为默认值(默认值可以是空值)。 使用企业管理器定义、删除DEFAULT约束 使用T-SQL语句创建DEFAUL
11、T约束(创建/修改表时) 语法格式:CONSTRAINT 约束名 DEFAULT 默认约束值 FOR 列名 使用T-SQL语句删除DEFAULT约束 语法格式:DROP CONSTRAINT 约束名,4.2.5 DEFAULT 约束,例:创建表学生(学号,姓名,性别)的同时定义性别的默认值为 男。T-SQL语句如下: CREATE TABLE 学生 (学号char(8) NOT NULL, 姓名char(10) ,性别 char(2) DEFAULT 男 ) 例:为存在的表学生(学号,姓名,性别)定义性别的默认值为 男 。T-SQL语句如下: ALTER TABLE 学生 ADD CONSTR
12、AINT dft_xs DEFAULT 男 FOR 性别 例:删除上例建立的默认约束。T-SQL语句如下: ALTER TABLE 学生 DROP CONSTRAINT dft_xs,4.3 默认【DEFAULT】,创建默认对象 绑定默认对象 删除绑定 删除默认对象,4.3 默认【DEFAULT】,默认是一种数据库对象,可以绑定到一列或多列上,作用与DEFAULT约束相似,在插入数据行时,为没有指定数据的列提供事先定义的默认值。 默认对象在功能上与默认约束是一样的, 在使用上有所区别: 默认约束是和表的定义联系在一起的,删除表的同 时默认约束也被删除 默认对象作为一种单独存储的数据库对象,独立
13、于 表之外(用CREATE DEFAULT定义),删除 表时并不删除默认对象(用DROP DEFAULT 删除),,4.3.1 创建默认对象,使用企业管理器创建默认对象 使用T-SQL语句CREATE DEFAULT创建默认对象 语法格式: CREATE DEFAULT 默认对象名 AS 默认值 例:定义默认对象:设置默认值为男 use 学生成绩 CREATE DEFAULT sex_mrAS 男,4.3.2 绑定默认对象,使用企业管理器绑定默认对象 使用sp_bindefault语句绑定默认对象 语法格式:sp_bindefault defname= 默认对象名, objname= 绑定的列
14、名 例:将默认对象sex_mr绑定到学生表的性别。 use 学生成绩 go exec sp_bindefault sex_mr,学生.性别,4.3.3 删除绑定,使用企业管理器删除绑定 使用sp_unbindefault语句解除绑定 语法格式:sp_unbindefault objname= 绑定的列名 例:删除学生表性别列和默认对象sex_mr的绑定。 use 学生成绩 go exec sp_unbinddefault, 学生.性别,4.3.4 删除默认对象,使用企业管理器删除默认对象 使用T-SQL语句DROP DEFAULT删除默认对象 语法格式: DROP DEFAULT 默认对象名
15、例:删除默认对象sex_mr use 学生成绩 go DROP DEFAULT sex_mr 注:删除默认对象时,首先要解除默认对象的绑定,然 后才能删除默认对象。,4.4 规则【RULE】,创建规则 绑定规则 删除绑定 删除规则对象,4.4 规则【RULE】,规则也是一种数据库对象,可以绑定到一列或多列上,作用与CHECK约束相似,在插入数据行时,指定接受的数据值的范围。 规则对象在功能上与CHECK约束是一样的, 在使用上有所区别: CHECK约束是和表的定义联系在一起的,删除表的同时 CHECK约束也被删除 规则对象作为一种单独存储的数据库对象,独立于表之 外(用CREATE RULE定
16、义),删除表时并不删除规则对 象(用DROP RULE删除),,4.4.1 创建规则对象,使用企业管理器创建规则对象 使用T-SQL语句CREATE RULE创建规则对象 语法格式: CREATE RULE 规则名 AS 规则条件 例:定义规则对象:设置成绩在0分和100分之间。 use 学生成绩 GO CREATE RULE cj_rlAS cj=0 and cj=100,4.4.2 绑定规则对象,使用企业管理器绑定规则对象 使用sp_bindrule语句绑定规则对象 语法格式:sp_bindrule rulename= 规则对象名 objname= 绑定的列名 例:将规则对象cj_rl绑定到成绩表的成绩列。 use 学生成绩 go exec sp_bindrule cj_rl,成绩.成绩,4.4.3 删除绑定,使用企业管理器删除绑定 使用sp_unbindrule
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防水池深基坑工程施工方案
- 2026年中小学心理健康教育讲座试题及答案
- 2026上海人工智能实验室招聘备考题库及答案详解参考
- 2026重庆市潼南区教育事业单位面向应届高校毕业生考核招聘30人备考题库及答案详解一套
- 施工脚手架安全技术交底
- 2026贵州遵义医科大学附属医院高层次人才引进127人备考题库含答案详解ab卷
- 2026陕西咸阳渭城卫生院招聘2人备考题库含答案详解(达标题)
- 外墙保温维修施工方案
- 小学六年级语文教学计划
- 2026年西安市浐灞第二中学教师招聘备考题库及答案详解(易错题)
- 2026南非餐饮业市场现状供需分析及投资评估规划分析研究报告
- 2026年储能电站运维人员考试题库
- GB/T 21001.2-2026制冷陈列柜第2部分:分类、要求和试验条件
- 2026年入团积极分子团课结业考试理论知识题
- 义务教育均衡发展质量监测八年级综合试卷
- (一模)东莞市2026年高三年级模拟考试生物试卷(含答案)
- 2026江苏南京师范大学专业技术人员招聘10人备考题库附完整答案详解(考点梳理)
- 《融合新闻学》第二版 课件05 网络图文报道
- 小红书账号运营培训课件【互联网】【运营课件】
- 水路客运安全培训课件
- 2026年深圳中考历史答题规范特训试卷(附答案可下载)
评论
0/150
提交评论