• SQL Server 约束的增删改


    1. 非空约束

      列的为空性决定表中的行是否可以包含空值。空置(NULL)不同于零(0)/空白或者长度为零的字符串(“”)。

      (1)创建非空约束

    create table orders 
    (
    docentry int constraint pk_id primary key not null, --红色部分非空约束
    customer_number varchar(20),
    order_number varchar(20) ,
    order_line int,
    order_price float
    )

      (2)修改非空约束

    alter table orders 
    alter column customer_number varchar(20) not null
    
    alter table orders 
    alter column order_number varchar(20) not null
    
    alter table orders 
    alter column order_line int not null

    2. 主键约束

      主键约束只能有一个,且不可为空,通常用于标识列。

      (1)新增主键约束

    create table orders 
    (
    docentry int constraint pk_od primary key not null, --红色部分主键约束
    customer_number varchar(20),
    order_number varchar(20) ,
    order_line int,
    order_price float
    )

      (2)删除主键约束,若想修改主键约束,必先删除原有主键约束

    alter table orders 
    drop constraint pk_od

      (3)更改主键约束

    alter table orders 
    add constraint pk_od primary key (docentry, order_number, order_line, customer_number) --这里括号里面写入多个列的话,表明是聚集索引,只要四个字段串起来的值唯一即可

    3. 唯一约束

      主键必然是唯一且不为空,但是唯一不一定是主键,而且主键只能有一个,但是唯一约束仅仅是为了保持某些列具有唯一性而已,所以可以有多列。也就是说一张表里只能有一个主键约束,但可以有多个唯一约束。

      比如invocies表中的docentry是录入系统的id,要作为主键,而invocie_number是发票编号,可作为唯一约束。

      (1)增加唯一约束

    create table invoices 
    (
    docentry int constraint pk_inv primary key not null, --主键约束,不可为空
    customer_number varchar(20),
    invoice_number varchar(20) constraint uni_inv unique, --唯一约束,可为空
    invoice_line int,
    invoice_price float
    )
    go

      (2)修改唯一约束,如果要修改某列的唯一约束,必须先删除该列原有唯一约束

      orders表中的order_number作为合同订单编号,也可以做唯一约束

    alter table orders 
    add constraint uni_od unique (order_number) --添加唯一约束

      (3)删除唯一约束

    alter table orders 
    drop uni_od

    4. 检查约束

      检查约束(check)用于约束放入列中的有效值。

      比如我们需要约束采购订单的状态,open,close用O,C来表示。(实际上工作中,前端通常会通过前端语言进行约束,数据库方面一般不需要这么做)

      (1)创建检查约束

    create table purchases 
    (
    docentry int constraint pk_pr primary key not null,
    vendor_number varchar(20),
    purchase_number varchar(20) constraint uni_pr unique,
    purchase_line int,
    purchase_price float,
    purchase_status char constraint ck_pr check(purchase_status in ('C', 'O')) --创建检查约束
    )
    go

      (2)更改现有表中的检查约束

    alter table purchases
    add constraint ck_pl check(len(purchase_line)<10) --给行号增加约束,字符长度不可大于10

      (3)删除检查约束,如果要修改某列的检查约束,必须先删除原有检查约束。

    alter table purchases
    drop constraint ck_pl

    5. 默认约束和外键约束

      (1)新建默认约束和外键约束

    USE [Howie]
    
    create table purchases 
    (
    docentry int constraint pk_pr primary key not null,
    vendor_number varchar(20),
    purchase_number varchar(20) constraint uni_pr unique,
    purchase_line int,
    purchase_price float,
    purchase_status char constraint ck_pr check(purchase_status in ('C', 'O')) constraint de_pr default 'O' , --purchase_status的状态默认为O
    baseentry int constraint fp_pr foreign key (baseentry) references orders (docentry)              --贸易公司一般自己不生产,所以每个客户订单都会对应到一个采购单,所以采购单的(外键)baseentry对应客户订单的docentry
    )
    go

      (2)删除默认约束和外键约束

    alter table purchases
    drop constraint de_pr,fp_pr

      (3)现有表中更改默认约束和外键约束

    alter table purchases
    add constraint de_pr default 'O' for purchase_status  --默认约束
    
    alter table purchases
    add constraint fp_pr  foreign key (baseentry) references orders (docentry)  --外键约束

    ///

    Jia Lissa's big fans
  • 相关阅读:
    python归并排序
    初学者迭代python
    大数相乘
    基本蚁群算法
    MATLAB绘图,绘双坐标轴,绘一图二轴等
    为什么说TCP协议是可靠的
    TCP协议-报文段数据中的自定义包头
    net start npf启用失败
    富时A50中国指数学习笔记
    ProtoBuffer学习总结
  • 原文地址:https://www.cnblogs.com/howie-we/p/12075456.html
Copyright © 2020-2023  润新知