资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第7章 实现数据完整性,7.1 数据完整性的概念,7.2 实现数据完整性,7.3 查看约束信息,7.4 删除约束,7.1 数据完整性的概念,1.完整性约束条件的作用对象,2.实现数据完整性的方法,1.完整性约束条件的作用对象,完整性约束条件的作用对象可以是表、元组和列。,列约束主要是列的类型、取值范围、精度等;,如:年龄0150,性别男,女,元组约束是元组中各个字段间的联系的约束。,如:开始日期小于结束日期,完整性类型,实体完整性,实体完整性将行定义为特定表的唯一实体。,一般用主码约束实现,域完整性,域完整性是指给定列的输入有效性。,年龄0150,一般用check等实现,引用完整性,引用完整性保持表之间已定义的关系。,一般用外码实现,2.实现数据完整性的方法,声明完整性,在表定义时声明,使用约束(CONSTRAINT)、缺省值(DEFAULT)等,由SQL Server自动加以保证,过程完整性,在客户端或服务器端用编程语言或工具实现,在Server端用触发器(trigger)来实现,7.2 实现约束,1.PRIMARY KEY 约束,2.Unique 约束,3.FOREIGN KEY 约束,4.Default 约束,5.CHECK 约束,PRIMARY KEY 约束,保证实体完整性,每个表有且只有一个PRIMARY KEY 约束,格式:,CONSTAINT,约束名,PRIMARY KEY (列名,n ),PRIMARY KEY 约束示例,为employees表和jobs表添加PRIMARY KEY 约束,ALTER TABLE employees,ADD CONSTRAINT PK_employees_emp_id,PRIMARY KEY(emp_id),ALTER TABLE jobs,ADD CONSTRAINT PK_jobs_job_id,PRIMARY KEY(job_id),Unique约束,确保在非主键列中不输入重复值。,应用在客观具有唯一性质的列上,如身份证号、社会保险号等。,格式:,CONSTAINT,约束名,UNIQUE (列名,n),Unique 约束示例,限制employees的sid都是唯一的,Alter table employees,Add Constraint u_employees_sid,Unique(sid),FOREIGN KEY 约束,用于建立和加强两个表数据之间的连接的一列或多列,格式:,CONSTAINT,约束名,FOREIGN KEY(本表列名),REFERENCES,引用表名(引用列名),FK约束示例,在employees表的job_id添加外键约束,保证雇员从事的工作一定是在jobs表中已有的工作。,ALTER TABLE employees,ADD CONSTRAINT FK_employees_job_id,FOREIGN KEY(job_id),REFERENCES jobs(job_id),Default(默认)约束,当向表中插入数据时,如果没有为定义了 DEFAULT 的列提供值,则是隐式要求为此列使用默认值。,一个,Default,只能约束一列,格式:,CONSTAINT,约束名,DEFAULT,约束表达式 for 列名,Default约束示例,当未给employees表的受雇日期插入值时,取当前值插入,Alter table employees,Add constraint df_emp_date,default getdate()for emp_date,也可以在定义表的同时定义约束:,Create Table employees,(.,emp_date datetime,constraint df_emp_date default getdate(),.),CHECK约束,通过限制输入到列中的值来强制域的完整性。,可定义同表多列之间的约束关系,格式,CONSTAINT,约束名,CHECK,逻辑表达式,Check 约束示例1,限制employees表的salary必须大于0,Alter table,employees,Add Constraint ck_,employees_salary,Check(salary 0),Check 约束示例2,限制employees表的Phone必须是8位长,且每一位必须是0 9的数字,Alter table,employees,Add Constraint ck_,employees,_,phone,Check(phone Like 1-9 0-9 0-9 0-9 0-9 0-9 0-9 0-9),Check 约束示例3,限制jobs表的low_salary必须小于high_salary,Alter table Jobs,Add Constraint ck_jobs_salary,Check(low_salaryhigh_salary),7.3 查看约束信息,使用查询分析器,使用系统存储过程,sp_helpconstraint 表名,7.4 删除约束,使用查询分析器,使用SQL语句,ALTER TABLE 表名,DROP CONSTRAINT 约束名,
展开阅读全文