目录
修改约束
创建数据库
添加约束
删除约束
Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
修改约束
如果说表结构的修改还在可以容忍的范畴之内,那么约束的修改是绝对 100% 禁止的
所有的约束一定要在表创建的时候就设置完整
实际上约束可以进行后期的添加以及后期的删除操作。如果要想进行这样的维护,那么必须要保证有约束名称
创建数据库
-- 删除数据表
drop table member purge ;
-- 创建数据表
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) ;
添加约束
alter table 表名称 add CONSTRAINT 约束名称 约束类型 ( 字段 ) 选项 ...
下面就为 member 表增加主键约束
ALTER TABLE member ADD CONSTRAINT pk_mid PRIMARY KEY(mid) ;
因为此时表中已经存在有相同的 ID 编号了,所以这个时候约束是不可能创建成功的
如果想创建成功这个约束,就必须把数据表中对应列中重复的数据删除
delete from member where mid=1
运行完这条删除语句后,再运行原先的修改约束语句,就可以成功修改
利用以上的语法可以实现 4 种约束的增加:主键、唯一、检查、外键,但是不包含非空
如果要想为字段增加非空约束,只能依靠修改表结构的方式完成
ALTER TABLE member MODIFY (name VARCHAR2(20) NOT NULL) ;
但是需要保证此时 name 列上没有 null 值。例如,如果要修改的表中有 null 列的时候,会出现如下情况
删除约束
alter table 表名称 drop CONSTRAINT 约束名称 ;
下面代码删除主键约束
ALTER TABLE member DROP CONSTRAINT pk_mid ;
综合来说,不要去修改表结构,约束一定要和数据表一起创建
对约束的定义既可以在 CREATE TABLE 语句中进行,也可以在 ALTER TABLE 语句中进行
在实际应用中,通常是先定义表的字段,然后再根据需要通过 ALTER TABLE 语句为表添加约束
当然,最好是在数据库创建之前,对每个数据表中字段规划好是否需要约束,在创建表的时候同时创建约束
一个数据表只能有一个主键约束,如果一个表已经存在主键约束,此时如果再添加主键约束,系统会提示错误信息