数据表代码创建约束,表的完整性

2019-12-09 16:01 来源:未知

约束

建立:主外键,约束。(删除主表的时候,同时删除子表;更新主表的时候更新子表)

非空约束 --NN,ont null constraint

1.建表时定义主键

  Create table 表名

   (

        Sno int identity(1,1),

        Sname nvarchar(20),

        --设置主键

        Primary key (Sno)

   )

必须填写数据不能为空

2.添加主外键

添加主键

alter table 表名

add constraint PK_表名_Sno

primary key(id)

参照完整性1.建表时定义外键

create table 表名

  (

      sno int identity(1,1) primary key,

      cno int not null,

      foreign key(cno) References

      表名2(Cno)

      on Delete cascade     --级联删除

      on update cascade    --级联更新

      -- on delete on action  删除管制

  )

添加外键

   alter table 表名

   add constraint FK_表名_表名2

   Foreign key(cid) references 表名2(cid)

用户定义完整性1.非空约束

   alter table 表名

   alter column name varchar(20) not null

--指定表 Student 添加名为NN_Student_sClassId非空约束(指定列名sClassId),括号输入表达式

3.唯一约束

   alter table 表名

   add constraint UQ_表名_列名 unique(列)

alter table Student add constraint NN_Student_sClassId check(sClassId is not null)

4.检查约束

   alter table 表名

   add constraint CK_表名_列名 check(age>5)

 

5.默认约束

   alter table 表名

   add constraint DF_表名_列名 default('男')

   for gender

主键约束 --PK,primary key constraint

6.删除约束 

  alter table 表名 drop constraint DF_表名_列

 

唯一且不为空

--指定表 Student 添加名为PK_Student_sId主键约束(指定列名sId)

alter table Student add constraint PK_Student_sId primary key(sId)

 

唯一约束 --UQ,unique constraint

唯一,允许为空,但是同样的数据只能出现一次

--指定表 Student 添加名为UQ_Student_sName唯一约束(指定列名sName)

alter table Student add constraint UQ_Student_sName unique(sName)

    

默认约束 --DF,default constraint

设置默认值

--指定表 Student 添加名为DF_Student_sName默认约束(指定列名sBirthday),获取当前日期

alter table Student add constraint DF_Student_sName default(getdate()) for sBirthday

 

--指定表 Student 添加名为DF_Student_sName默认约束(指定列名sBirthday),指定日期  

alter table Student add constraint DF_Student_sName default('1995-12-12') for sBirthday  

--指定表 Student 添加名为DF_Student_sName默认约束(指定列名sSex),指定性别

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

 

检查约束 --CK,check constraint

设置范围以及格式限制

--指定表 Student 添加名为 CK_Student_sSex检查约束(指定列名sSex),限制为'男'或者'女'

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

--指定表 Student 添加名为 CK_Student_sSex检查约束(指定列名sAge),限制为0-100之间的数字

alter table Student add constraint CK_Student_sAge check(sAge>=0 and sAge<=100)   

 

外键约束  --FK,foreign key constraint

表关系

alter table Student add constraint Fk_Student_sClassId foreign key(sClassId) references Class(cId)

--指定表Student添加sClassId外键为Class的主键cId

on delete cascade on update  cascade --级联删除 --级联更新

 

删除约束

alter table Student drop Constraint NN_Student_sClassId    --删除指定表中的约束

 

创建表时设置列的约束

create table Users

(

     uId int identity(1,1) primary key,--创建了一个列名为 uId的列,并设置了主键约束

     uName nvarchar(8) not null unique,创建了一个列名为uName的列,并设置了唯一约束

     uSex nchar(1) not null check(uSex='男' or uSex='女') default('男'),--设置了非空和默认约束

     uBirthday datetime,--创建了一个列名为uBirhday的列,并没有设置约束

     uAge int not null check(uAge>0 and uAge<100) default(18),--设置了非空、检查、默认约束

 )

TAG标签:
版权声明:本文由金沙澳门唯一官网发布于数据库管理,转载请注明出处:数据表代码创建约束,表的完整性