数据库中的约束

数据库约束是为了保证数据的完整性(正确性)而实现的一套机制
一、关于约束
0、非空约束
not null

1、主键约束(PK)primary key constraint 唯一且不为空
例如对已经存在的Student表中的某一列进行添加主键约束
[sql]  view plain copy
  1. alter table Student   
  2. add constraint PK_Student primary key(sId)  
其中constraint 表示约束,PK_Student为约束名,primary key(sId)指定为哪一列添加主键约束,其中的sId表示添加约束的字段。


2、唯一约束(UQ)unique constraint唯一,允许为空,即可以再其中出现null值,但只能出现一次

[sql]  view plain copy
  1. alter table Student  
  2. add constraint UQ_Student_sNo unique(sNo)  
unique(sNo)中的sNo表示添加unique约束的字段名



3、默认约束(DF)default constraint默认值
[sql]  view plain copy
  1. alter table Student  
  2. add constraint DF_Student_sSex default('男'for sSex  
为student表中的sSex字段设置默认值为‘男’,即当该字段为填入数据时,数据库将自行为其加上数据内容为‘男’的数据
其中DF_Student_sSex为默认约束名

注:以上创建的主键约束、唯一约束均存在与数据库的‘ 键’目录下,而默认约束在位于‘约束’目录下

4、检查约束(CK)check constraint范围以及格式限制
[sql]  view plain copy
  1. alter table Student  
  2. add constraint CK_Student_sSex check (sSex='男' or sSex='女')  
为student表中的sSex字段添加内容检查约束,只允许添加的内容为‘男’或者是‘女’



5、外键约束(FK)foreign key constraint表关系
[sql]  view plain copy
  1. alter table student  
  2. add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)  
删除主表中数据的时候,必须先删除子表中对应的数据,否则执行SQL语句时,数据库报错

注:外键同样存在于 ‘键’ 目录中。,与其它约束的创建不同的是,创建外键还需要添加对于外键表的引用,即使用references 对应相应的外键表中的列。且引用的外键表所引用的列,必须为主键或候选键,否则数据库在执行SQL语句时就会报错。

提到外键,不得不提的是级联删除以及级联修改
[sql]  view plain copy
  1. alter table Student  
  2. add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)  
  3. --级联删除  
  4. on delete cascade   
  5. --级联修改  
  6. on update cascade  
即当删除主表中的数据时,子表中与其有关的数据都将被删除。因此,此外键的创建方法在使用时需谨慎考虑


6、 删除约束
[sql]  view plain copy
  1. alter table Student  
  2. drop constraint CK_Student_sAge  
需要通过SQL语句删约束时,通过使用Drop命令删除相应的约束名


二、在创建表的过程中添加约束
例如1
[sql]  view plain copy
  1. create table Student0  
  2. (  
  3.     sId int identity(1,1) primary key,    
  4.     sName nvarchar(10) not null,            
  5.     sAge int constraint CK_Student0_sAge check(sAge >= 18) constraint DF_Student0_sAge default(18),  
  6.     sClassId int constraint FK_Student0_sClassId foreign key (sClassId) references Class(cId)  
  7. )  
原地址:http://blog.csdn.net/changwei07080/article/details/7529451
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值