上一节我们了解了在建表时如何创建约束,本文将阐述如何在建表之后添加约束。
1 系统、环境和前提约束
- win10 64
- 熟悉表的约束 https://www.jianshu.com/p/27e79d378062
- 作者的oracle账号密码分别为 scott/tiger,请读者根据实际情况设置。
2 操作
-
1 以系统管理员启动cmd命令行
- 2 登录到mysql命令行,创建一张学生表和一张班级表
>sqlplus scott/tiger
>drop table t_class;
>create table t_class(id int,name varchar(20));
>drop table t_user;
>create table t_user(id int, name varchar(20), age int, gender char(1),email varchar(30), classId int);
- 3 添加主键约束
# 删除主键约束
alter table t_user drop constraint t_user_id_pk;
# 创建主键约束
alter table t_user add constraint t_user_id_pk primary key (id);
- 4 添加外键约束
# 删除外键约束
alter table t_user drop constraint t_user_class_fk;
# 创建主键约束
alter table t_user add constraint t_user_class_fk foreign key (classId) references t_class(id) on delete set null;
- 5 添加非空约束
# 删除非空约束
alter table t_user drop constraint t_user_name_nn;
# 添加非空约束
alter table t_user modify name constraint t_user_name_nn not null;
- 6 添加check约束
# 添加check约束
alter table t_user modify (age int default 25 check(age>20));
- 7 添加唯一约束
# 删除唯一约束
alter table t_user drop constraint t_user_uq;
# 添加唯一约束
alter table t_user add constraint t_user_uq unique(email);
以上就是在表已经创建之后再去添加约束的过程,要特别注意,如果表中有数据且当前的数据与马上要添加的约束对立,那么约束是不会添加成功的,所以,表的约束最好在进行表设计的时候就考虑完善,此种表已经创建好特别表已经使用了一段时间再去添加约束的操作要尽可能避免。