数据完整性约束

实体完整性:实体就是指一条记录。这种完整性就是为了保证每一条记录不是重复记录。是有意义的
– 主键:非空和唯一.一个表只有一个主键,但是一个主键可以是由多个字段组成的 组合键
– 标识列:系统自动生成,永远不重复
– 唯一键:唯一,但是可以为null,只能null一次

域完整性:域就是指字段,它是为了保证字段的值是准和有效,合理值
– 类型 是否null,默认值,check约束,关系

自定义完整性:
– check约束 , 存储过程 触发器

引用完整性:一个表的某个字段的值是引用自另外一个表的某个字段的值。引用的表就是外键表,被引用的表就是主键表
– 1.建立引用的字段类型必须一致
– 2.建立引用的字段的意义一样
– 3.建立主外键关系的时候选择 外键表 去建立主外键关系
– 4.建立主外键关系的字段在主表中必须是主键或者唯一键
– 5.对于操作的影响 :
– 1.在添加数据时,先添加主键表再添加外键表数据
– 2.在删除的时候先外键表数据再删除主键表数据
– 级联的操作:不建议使用:会破坏数据完整性
– 不执行任何操作:该报错就报错,该删除就删除
– 级联:删除主表记录,从表引用该值的记录也被删除
– 设置null:删除主表记录,从表对应的字段值设置为null,前提是可以为null
– 设置为default:删除主表记录,从表对应的字段值设置为default,前提是可以为default

主键约束(PK Primary key) 唯一键约束(UQ unique) 外键约束(FK foreign key) 默认值约束(DF default) check约束(CK check)

语法:
alter table 表名
add constraint 前缀_约束名称 约束类型 约束说明(字段 关系表达式 值)

use School
if exists(select * from sysobjects where name='PK_Classes_Classid')
 alter table classes  drop constraint PK_Classes_Classid
alter table classes 
add constraint PK_Classes_Classid primary key(classid)
--为id添加主键
alter table teacher 
add constraint PK_teacher_id primary key(id)
--为name添加唯一键
alter table teacher
add constraint UQ_Teacher_Name unique(Name)
--同时创建salary的默认约束和age的check约束
alter table teacher
add constraint DF_Teacher_Salary default(5000) for salary,
constraint CK_Teacher_Age check(age>0 and age<=100)
--为teacher表的classid字段创建主外键
if exists(select * from sysobjects where name='FK_Teacher_Classes_Classid')
 alter table teacher  drop constraint FK_Teacher_Classes_Classid
alter table teacher
with nocheck --不检查现有数据
add constraint FK_Teacher_Classes_Classid foreign key(classid) references classes(classid)
--on delete set default  级联操作
--不执行任何操作:该报错就报错,该删除就删除  --no action --默认选择
--级联:删除主表记录,从表引用该值的记录也被删除 --cascade
--设置null:删除主表记录,从表对应的字段值设置为null,前提是可以为null   --set null
--设置为default:删除主表记录,从表对应的字段值设置为default,前提是可以为default  --set default
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值