• SqlServer--代码创建约束



    约束-保证数据完整性

    数据库约束是为了保证数据的完整性(正确性)而实现的一套机制。当创建了主外键关系后,如果在外键表中有任何记录引用了主键表中的某条记录,则在主键表中不能删除该记录。同时主键表也不能删除。

    注意:创建约束时,如果表中已经存在“非法数据”(与约束不一致的数据),那么此时是无法成功创建约束的,需要先将表中的数据做更改,然后才能创建约束。

    非空约束 (选择复选框)not null
    主键约束(PK)primary key constraint唯一且不为空(选中列,右键,设为主键)
    唯一约束(UQ)unique constraint唯一,允许为空,但只能出现一次(右键,索引/键,添加)
    默认约束(DF)default constraint 默人值(选中列,设置列的默认绑定值)
    检查约束(CK)check constraint 范围以及格式限制(右键check约束,添加)
    外键约束(FK)foreign key constraint表关系(在外键表,右键,关系,增加一个主外键关系)
    增加外键约束时,设置级联更新、级联删除:

    on delete cascade
    on update cascade

    --通过t-sql语句来创建约束

    --新建一张表:员工信息表

    create table Employees

    (

    EmpId int identity(1,1),

    EmpName varchar(50),

    EmpGender char(2),

    EmpAge int,

    EmpEmail varchar(100),

    EmpAddress varchar(500)

    )

    create table Department

    (

    DepId int identity(1,1) ,

    DepName varchar(50)

    )

    -----------------------手动删除、修改、增加 列-----------------------------------------------

    --手动删除一列(删除EmpAddress列)

    alter table Employees drop column EmpAddress

    --手动增加一列(增加一列EmpAddr varchar(1000))

    alter table Employees add EmpAddr nvarchar(1000)

    --手动修改一下EmpEmail的数据类型(varchar(200))

    alter table Employees alter column EmpEmail varchar(200)

    ---------------------------------手动增加、修改、删除 约束-------------------------------------------

    --为EmpId增加一个主键约束

    alter table Employees add constraint PK_Employees_EmpId primary key(EmpId)

    --非空约束,为EmpName增加一个非空约束 not null(修改列)

    alter table Employees alter column EmpName varchar(50) not null

    --为EmpName增加一个唯一约束

    alter table Employees add constraint UQ_Employees_EmpName unique(EmpName)

    --为性别增加一个默认约束,默认为'男'

    alter table Employees add constraint DF_Employees_EmpGender default('男') for EmpGender

    --为性别增加一个检查约束,要求性别只能是:'男' or '女'

    alter table Employees add constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

    --为年龄增加一个检查约束:年龄必须在-120岁之间,含岁与岁。

    alter table Employees add constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120)

    --创建一个部门表,然后为Employee表增加一个DepId列。

    alter table Employees add EmpDepId int not null

    --为Department表设置主键。主键列是:DepId

    alter table Department add constraint PK_Department_DepId primary key(DepId)

    --增加外键约束 

    alter table Employees add constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId)    on delete cascade

    --增加外键约束 ,同时 添加级联删除

    alter table Employees add constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId)    on delete cascade

    --删除单个约束

    alter table Employees drop constraint FK_Employees_Department

    --一次删除多个约束

    alter table Employees drop constraint

    FK_Employees_Department,

    CK_Employees_EmpAge,

    CK_Employees_EmpGender,

    DF_Employees_EmpGender,

    UQ_Employees_EmpName

    --一次增加多个约束

    alter table Employees add

    constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId),

    constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120),

    constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

    ---创建表的同时就为表增加约束

    create table Employees

    (

    EmpId int identity(1,1) primary key,

    EmpName varchar(50) not null unique check(len(EmpName)>2),

    EmpGender char(2) default('男'),

    EmpAge int check(EmpAge>0 and EmpAge<120),

    EmpEmail varchar(100) unique,

    EmpAddress varchar(500) not null,

    EmpDepId int foreign key references Department(DepId) on delete cascade

    )

    create table Department

    (

    DepId int identity(1,1) primary key,

    DepName varchar(50) not null unique

    )

  • 相关阅读:
    异步/同步、阻塞/非阻塞的理解
    轻量级交互数据json格式初探
    linux服务器开发浅谈
    linux守护进程解读
    OpenStack securityGroup rule Set
    OpenStack ceilometer部署安装监控,计费数据抓取测试Ok
    OpenStack high-level Functionsenabled
    控制系统音量,自己定义MPVolumeView
    windows 用户变量和系统变量的差别
    反汇编基本原理与x86指令构造
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/6185217.html
Copyright © 2020-2023  润新知