关系数据模型常见约束的语法总结

本文详细介绍了在SQL中设置默认值和各种约束的方法,包括DEFAULT、RULE、CHECK约束及主键约束。通过实例展示了如何在表定义时设定默认值,以及如何创建和绑定规则与检查约束。

Default的设定

表定义时设定default

create table pub(
    pub_id char(4) not null,
    pub_name varchar(40) null,
    city   varchar(20)   default 'Pasa',
    state  char(2)         default 'CA')

SQL中字符型数据必须用单引号''括起

多个表使用相同默认值时

create default 默认名 as '默认值'
sp_bindefault '默认名' , '表名.列名'

eg:
create default dft_state as 'CA'
sp_bindefault 'dft_state' , ‘pub.state’

这种方法和第一种方法是一样的

解绑和删除默认名的方法
sp_unbindefault '表名.列名'
drop default 默认名

RULE的设定

rule主要针对表中的某一列,指明该列的取值范围
设定方式如下:
' create rule 规则名 as 规则'
' eg: '
' create rule state_rule as @state in('CA','CO','WA') '

规则可用in(),between ... and ...,关系式<,>,<=,>=,=,!=,!>,!<和like等操作符,其中的@是局部变量说明

规则创建之后则需要绑定在相应的列上,语法如下

sp_binrule 规则名, '表名.列名'

 eg;
 sp_binrule state_rule ,'pub.state'

规则解绑和删除的语法如下:

sp_unbinrule  '表名.列名'
drop rule 规则名

eg:
sp_unbinrule 'pub.state'
drop rule state_rule

检查约束的设定

类似于rule,可对比学习

列级检查约束定义

create table pub(
    pub_id char(4) not null
    constraint pub_id_constraint
        check(pub_id in ('123','234','563') or pub_id like('2019[0-9][0-9]'),
    pub_name varchar(40) null,
    city   varchar(20)   default 'Pasa',
    state  char(2)         default 'CA')

表级检查约束

create table discount(
    discounttype varchar(40) not null,
    store_id         char(4)       null,
    lowqty            smallint      null,
    highqty           smallint      null,
    discount         float            not null,

    constraint low_high_check
    check(lowqty <= highqty))

总而言之,表级约束就上面两种写法。

主键约束的设定

列级主键约束

create table stu(
    stuid   char(10) primary key,
    stuname varchar(50) null,
    tel            char(11)      null)

表级主键约束

  create table stu(
        stuid   char(10) primary key,
        stuname varchar(50) null,
        tel            char(11)      null,
        constraint primary_key
            primary key nonclustered(stuid))

转载于:https://www.cnblogs.com/zuixime0515/p/10499578.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值