sql的约束语句(SQL数据完整性介绍和SQL语句创建约束)
sql的约束语句(SQL数据完整性介绍和SQL语句创建约束)4、引用完整性主要包含部分: check约束、 存储过程、 触发器等非空,类型,check约束,默认值,关系(主外键约束)等都是域完整性的部分。3、自定义约束完整性 用户自己定义的约束规则
SQL中的数据完整性包括
- 实体完整性
- 域完整性
- 自定义约束完整性
- 引用完整性
1、实体完整性
表的每一行数据就称为一个实体 。实体完整性是指 每一行记录都是唯一的,不重复的。
- 标识列:系统自动生成,永远不会重复。
- 主键:唯一 非空 一个表的主键只有一个。
- 唯一键:唯一 ,可以为空值,但是只能空一次。 右键-索引/键--添加--修改名称,修改类型,确定字段。
2、域完整性
域就是指字段,域完整性就是为了保证字段的值是合理和准确的
非空,类型,check约束,默认值,关系(主外键约束)等都是域完整性的部分。
3、自定义约束完整性
用户自己定义的约束规则
主要包含部分: check约束、 存储过程、 触发器等
4、引用完整性
一个表的某个字段的值引用自另外一个表的某一字段,被引用的表就成为主表,引用表就成为从表或者外键表即引用哪个表中的值,那个表就是主键表。 一个表可同时做主键表和外键表。可参见:SQL数据库中主键和外键的应用实例
注意事项:
1.选择外键表去创建主外键关系:外键要引用,所以在外键表建立关系。
2.建立主外键关系的字段类型和意义必须一致。
3.建立关系的字段,在主表中必须是主键或者唯一键
4.添加数据的时候先添加主表数据,再添加外键表
5.删除数据时,先删除外键表数据,再删除呢主键表数据。
SQL语句创建约束
约束种类:
主键约束 (primary key PK) 、唯一键约束(unique UQ) 、检查约束(check CK)、 默认值约束( default DF) 、外键约束(foreign key FK)等。
创建约束的语法:
alter table 表名 add constraint 约束的名称(以简写作为前缀) 约束的规则 约束的说明(字段 表达式 值)
设置约束实例:
1.设置id为主键:
alter table Teacher add constraint PK_Teacher_id primary key(id)
2.设置name为唯一键
alter table Teacher add constraint UQ_Teacher_Name unique(name)
3.设置Age在0-100之间
alter table Teacher add constraint CK_Teacher_Age check(0<age and age<= 100)
4.设置birthday 为默认值
alter table Teacher add constraint DF_Teacher_Birthday default('1993-05-29') for birthday
结果如下:
注意事项:
创建约束前要先判断约束是否已存在,如果事先存在约束则先删除约束。
例如:
判断id
if exists (select * from sysobjects where name = 'PK_Teacher_Id') alter table Teacher drop constraint PK_Teacher_Id
关系:建立的级联操作
【insert和delete规范】
1.不执行任何操作:该报错就报错,能删除就删除
2.级联:是使主键表和外键表的数据同步变化,删除主键表的东西,外键表的东西同时删除。
3.set null: 删除主键表,外键表对应记录的字段值=null,如果有非空值,报错
4.set default: 删除主键表,外键表赌赢记录的字段值=设置的默认值,前提是这个字段已经设置了默认值。
SQL语句操作:
alter table Teacher with nocheck --不检查现有数据 add constraint FK_Teacher_Classid foreign key(classid) references classes(cid) --外键约束 on delete set null --级联