修改约束

修改约束

如果说表结构的修改还在可以容忍的范畴之内,那么约束的修改是绝对100%禁止的。所有的约束必须在表创建的时候就设置完成。

约束可以进行后期的添加以及后期的删除操作。但是如果要想进行这样的维护,那么必须要保证有约束名称。

范例:数据脚本

--删除数据表
DROP TABLE book PURGE;
DROP TABLE member PURGE;

--清空回收站
PURGE RECYCLEBIN;
--创建数据表
CREATE TABLE member(
	mid  NUMBER,
	name VARCHAR2(20)  	
);

--测试数据
insert into member(mid,name)values (1,'韩信');
INSERT INTO member(mid,name)values (1,'李白'); 
INSERT INTO member(mid,name)values (2,null); 
COMMIT;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLe3EBk6-1580916427536)(C:\Users\016322605\Desktop\csdn\Oracle\捕获251.PNG)]

范例:增加约束语法

ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 约束类型(字段) 选项...

范例:为member表增加主键约束

ALTER TABLE member ADD CONSTRAINT pk_mid PRIMARY KEY(mid);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q7s88XlT-1580916427537)(C:\Users\016322605\Desktop\csdn\Oracle\捕获252.PNG)]

因为此时表中已经存在有相同的ID编号了,所以这个时候约束是不可能创建成功的。

范例:数据正确时增加表约束

delete from member where mid=1;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uA3IFnVo-1580916427538)(C:\Users\016322605\Desktop\csdn\Oracle\捕获253.PNG)]

利用以上的语法可以实现四种约束的增加:主键、唯一、检查、外键,但不包含有非空。

范例:添加非空约束

ALTER TABLE member ADD CONSTRAINT nk_name NOT NULL(name);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFaOzlN2-1580916427538)(C:\Users\016322605\Desktop\csdn\Oracle\捕获254.PNG)]

如果想要为字段增加非空约束,那么只能够依靠修改表结构的方式完成。

范例:增加非空约束

ALTER TABLE member modify (name varchar2(20) not null);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZCPs4JG-1580916427540)(C:\Users\016322605\Desktop\csdn\Oracle\捕获255.PNG)]

但是需要保证此时name列上没有null值。

范例:更新表结构

update member set name='李白' where mid=2;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8Dx9iKL-1580916427541)(C:\Users\016322605\Desktop\csdn\Oracle\捕获256.PNG)]

范例:删除约束语法

ALTER TABLE 表名称 DROP CONSTRAINT 约束名称;

范例:删除主键约束

ALTER TABLE member drop constraint primary key;

综合来讲,不要去修改表结构,约束一定要和数据表一起创建。

总结:

  • 创建表、约束要一起完成
  • 重要的约束:PRIMARY KEY 、FOREIGN KEY、NOT NULL、 UNIQUE
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值