欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库中的约束(转)

程序员文章站 2022-06-04 10:44:09
...

数据库约束是为了保证数据的完整性(正确性)而实现的一套机制

一、关于约束

0、非空约束

not null


1、主键约束(PK)primary key constraint 唯一且不为空

例如对已经存在的Student表中的某一列进行添加主键约束

  1. alter table Student

  2. add constraint PK_Student primary key(sId)

alter table Student 
add constraint PK_Student primary key(sId)

其中constraint 表示约束,PK_Student为约束名,primary key(sId)指定为哪一列添加主键约束,其中的sId表示添加约束的字段。



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

  1. alter table Student

  2. add constraint UQ_Student_sNo unique(sNo)

alter table Student
add constraint UQ_Student_sNo unique(sNo)

unique(sNo)中的sNo表示添加unique约束的字段名




3、默认约束(DF)default constraint默认值

    alter table Student

  1. add constraint DF_Student_sSex default('男') for sSex

alter table Student
add constraint DF_Student_sSex default('男') for sSex

为student表中的sSex字段设置默认值为‘男’,即当该字段为填入数据时,数据库将自行为其加上数据内容为‘男’的数据
其中DF_Student_sSex为默认约束名


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


4、检查约束(CK)check constraint范围以及格式限制

 alter table Student

  1. add constraint CK_Student_sSex check (sSex='男' or sSex='女')

alter table Student
add constraint CK_Student_sSex check (sSex='男' or sSex='女')

为student表中的sSex字段添加内容检查约束,只允许添加的内容为‘男’或者是‘女’


5、外键约束(FK)foreign key constraint表关系

  1. alter table student

  2. add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)

alter table student
add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)

删除主表中数据的时候,必须先删除子表中对应的数据,否则执行SQL语句时,数据库报错  


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

提到外键,不得不提的是级联删除以及级联修改

  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

alter table Student
add constraint FK_Student_sClassId foreign key (sClassId) references Class(cId)
--级联删除
on delete cascade 
--级联修改
on update cascade

即当删除主表中的数据时,子表中与其有关的数据都将被删除。因此,此外键的创建方法在使用时需谨慎考虑


6、删除约束

  1. alter table Student

  2. drop constraint CK_Student_sAge

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)

     ) 



转载于:https://my.oschina.net/VennLee/blog/92421