数据库约束是为了保证数据的完整性(正确性)而实现的一套机制
一、关于约束
0、非空约束
not null
1、主键约束(PK)primary key constraint 唯一且不为空
例如对已经存在的Student表中的某一列进行添加主键约束
- alter table Student
- add constraint PK_Student primary key(sId)
其中constraint 表示约束,PK_Student为约束名,primary key(sId)指定为哪一列添加主键约束,其中的sId表示添加约束的字段。
2、唯一约束(UQ)unique constraint唯一,允许为空,即可以再其中出现null值,但只能出现一次
- alter table Student
- add constraint UQ_Student_sNo unique(sNo)
unique(sNo)中的sNo表示添加unique约束的字段名
3、默认约束(DF)default constraint默认值
- alter table Student
- add constraint DF_Student_sSex default('男') for sSex
为student表中的sSex字段设置默认值为‘男’,即当该字段为填入数据时,数据库将自行为其加上数据内容为‘男’的数据
其中DF_Student_sSex为默认约束名
注:以上创建的主键约束、唯一约束均存在与数据库的‘ 键’目录下,而默认约束在位于‘约束’目录下
4、检查约束(CK)check constraint范围以及格式限制
- alter table Student
- add constraint CK_Student_sSex check (sSex='男' or sSex='女')
为student表中的sSex字段添加内容检查约束,只允许添加的内容为‘男’或者是‘女’
5、外键约束(FK)foreign key constraint表关系
- alter table student
- add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)
删除主表中数据的时候,必须先删除子表中对应的数据,否则执行SQL语句时,数据库报错
注:外键同样存在于 ‘键’ 目录中。,与其它约束的创建不同的是,创建外键还需要添加对于外键表的引用,即使用references 对应相应的外键表中的列。且引用的外键表所引用的列,必须为主键或候选键,否则数据库在执行SQL语句时就会报错。
提到外键,不得不提的是级联删除以及级联修改
- alter table Student
- add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)
-
- on delete cascade
-
- on update cascade
即当删除主表中的数据时,子表中与其有关的数据都将被删除。因此,此外键的创建方法在使用时需谨慎考虑
6、
删除约束
- alter table Student
- drop constraint CK_Student_sAge
需要通过SQL语句删约束时,通过使用Drop命令删除相应的约束名
二、在创建表的过程中添加约束
例如1
- create table Student0
- (
- sId int identity(1,1) primary key,
- sName nvarchar(10) not null,
- sAge int constraint CK_Student0_sAge check(sAge >= 18) constraint DF_Student0_sAge default(18),
- sClassId int constraint FK_Student0_sClassId foreign key (sClassId) references Class(cId)
- )
原地址:http://blog.csdn.net/changwei07080/article/details/7529451