oracle设置约束条件_oracle约束&修改

Oracle数据库通过约束(constraints)防止无效的数据进入到表中,以保护数据的实体完整性。

为了便于约束的使用,往往需要为约束起一个有意义的名字(例如student_id_pk表示student表id列为主键);

如果不显式命名约束,Oracle数据库将以SYS_Cn的格式为约束命名,这里n是唯一的整数。

约束分为字段级别约束和表级别约束:字段级约束:只为单个字段添加约束;表级约束:为多个字段添加约束

①、not null:指定字段不能为空,只能定义为字段级约束

create table book(

author varchar2(60) not null

)

②、unique:指定字段的值(或字段组合的值)对于表中所有的行必须是唯一的。

对于无非空约束的字段,唯一键约束允许输入空值,且包含空值的行可以有多个。可以为字段级别约束,也可以为表级别约束。

create table user_info(

user_name varchar2(30) unique

)

③、primary key:指定主键。该约束强制字段或字段组合必须具有唯一性且每个字段不能为空。可以为字段级别约束,也可以为表级别约束。

create table book(

id char(36) primary key

)

④、foreign key:指定外键(即外来的主键)。外键值必须匹配父表中存在的值;如果父表主键值是子表的外键值,则该数据不能删除,Oracle数据库中外键的值可以为null。

在创建表的最后添加语句:

foreign key(字段名)  refenreces (主表名)字段名;

⑤、check:指定列值必须满足check中条件,否则无法进行添加或修改

create table people(

age number(3) not null check(age>0 and age<150)-- --年龄不能为空并且范围在0~150

)

二、修改表

1、修改表字段:

a、添加字段

alter table student

add (sex char(2) default '1' constraint student_sex_1_or_2 check(sex='1' or sex='2'))

注意:新添加的字段在表的最后一列,不能指定字段的位置,这与MySQL数据库不同(MySQL数据库可以通过after设定添加字段的先后顺序)

b、修改字段

alter table student

modify(name varchar2(12))

注意:字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值,其中默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响。

c、删除字段

alter table student

drop(sex)

注意:

①、一次只能删除一个字段;

②、一个表至少要保留一个字段;

③、如果所删除列(如publisher表中id列)是另一个表的外键(book表publisher_id)则该列(publisher表中id列)无法删除,如下图所示:

2、修改表字段约束:

a、添加约束

alter table student

add constraint student_id_pk primary key(id);--将student表id列设为主键

b、删除约束

alter table student

drop constraint student_sex_1_or_2;--依据约束名删除约束

alter table student

drop primary key--依据约束类型删除约束

alter table student

drop unique(id) --依据约束类型删除约束

c、启用或禁用约束

alter table student

disable constraint student_sex_1_or_2;--禁用约束

alter table student

enable constraint student_sex_1_or_2;--启用约束

三、表重命名

rename 旧名字 to 新名字

四、截断表

truncate table 表名——不用执行commit就可以将表数据删除

delete from 表名——必须执行commit才可以将表数据删除

关于二者的详细区别可以参考:

链接:

五、删除表

drop table 表名

六、注释

表注释

comment on table 表名 is '注释内容';

字段注释

comment on column 表名.字段名 is '注释内容';

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值