oracle建表以后增加约束,1.5.3 如何在创建表之后指定约束

1.5.3   如何在创建表之后指定约束

约束既可以在创建表的同时定义,也可以在表创建之后再添加。不过在表创建之后再添加约束可能会带来这样的问题,如果表中已经有数据,而这样的数据不满足将要添加的约束,那么约束是无法添加的。例如要为表的某个列指定NOT NULL约束,但是这个表中这个列本来就有很多空值,这种情况导致这个约束无法添加。因此***的做法是在创建表之前充分考虑需要什么样的约束,在创建表的同时定义约束。

添加约束实际上也是对表结构的修改,因此添加约束也是通过执行ALTER语句完成的。因为表的结构已经确定,所以我们无法采用列级约束的形式,在某个列名之后指定约束,而只能采用表级约束的形式。添加约束的ALTER语句格式为:ALTER TABLE 表名 ADD(CONSTRAINT 约束名 约束类型(列名))

其中CONSTRAINT关键字和约束名是可省的,如果没有为约束指定名称,那么名称将自动产生。如果要添加多个约束,在ADD子句的括号中指定多个用逗号分隔的约束就可以了。现在假设表student上没有任何约束,我们为这个表添加几个约束,具体的语句为:SQL>ALTER TABLE student

ADD(CONSTRAINT pk_sno PRIMARY KEY(sno),

CONSTRAINT gen_check CHECK(gender in('男','女')));

除NOT NULL约束以外,其余四种约束都可以通过ADD子句添加。NOT NULL约束约束比较特殊,只能通过ALTER命令的MODIFY子句来添加。添加NOT NULL约束的语法格式为:ALTER TABLE 表名 MODIFY (列名 CONSTRAINT 约束名 NOT NULL);

同样,如果要为多个列施加NOT NULL约束,那么在MODIFY子句之后的括号中指定多个约束项,相互之间用逗号分隔开即可。假设表student中的sname列上没有NOT NULL约束,可以通过下面的ALTER语句在该列上增加NOT NULL约束:SQL>ALTER TABLE student MODIFY (sname CONSTRAINT nn_sname NOT NULL);

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值