create table customer(
customerId char(8) primary key,
name varchar2(20) not null,
address varchar2(50),
email varchar2(50) unique,
sex char(2) default '男' check(sex in ('男','女')),
cardId char(18)
);
create table purchase(
customerId char(8) references customer(customerId),
goodsId char(8) references goods(goodsId),
nums number(10) check(nums between 1 and 30)
);
如果在建表时忘记建立必要的约束,则可以在建表后使用alter table命令为表
增加约束,但是要注意:增加not null 约束时,需要使用modify选项
而增加其它四种约束使用add选项
1)增加商品名也不能为空 alter table goods modify goodsName not null;
2)增加身份证也不能重复 alter table customer add constraint cardId_unique unique(cardId);
3)增加客户的地址只能是‘海淀’,‘朝阳’,‘东城’,‘西城’,‘通州’,‘崇文’
alter table customer add constraint address_check check(address in ('海淀','朝阳','东城','西城','通州','崇文'));
删除约束 :
alter table 表名 drop constraint 约束名称
说明:在删除主键约束的时候,可能有错误,比如
alter table 表名 drop primary key;
这是因为如果在两张表存在主从关系,那么在删除主表的主键约束时
必须带上cascade选择 如:alter table 表名 drop primary key cascade;
显示约束信息
1显示约束信息
通过查询数据字典视图user_constraints,可以显示当前用户所有的约束的信息
select constraint_name,constraint_type,status,validated from
user_constraints where table_name='表名'
2显示约束列
通过查询数据字典视图user_cons_columns,可以显示约束所对应的表列信息
select column_name,position from user_cons_columns where constraint_name='约束名'