非空约束,主键约束,外键约束,唯一约束,检查约束
一、非空约束
1、在创建表时设置非空约束
create table userinfo_1
( id number(6,0),
username varchar2(20) not null,
userpwd varchar2(20) not null);
desc userinfo_1;
2、在修改表时添加非空约束
alter table userinfo
modify username varchar2(20) not null;
3、在修改表时删除非空约束
alter table userinfo
modify username varchar2(20) null;
二、主键约束
一张表只能设置一个主键约束,可由多个字段构成(联合主键)。
1、在创建表时设置主键约束
(1) create table userinfo_p
( id number(6,0) primary key,
username varchar2(20),
userpwd varchar2(20) );
(2) create table userinfo_p1
( id number(6,0) ,
username varchar2(20),
userpwd varchar2(20),
constraint pk_id_username primary key(id, username) );
2、在修改表时添加主键约束
alter table userinfo
add constraints pk_id primary key(id);
desc user_constraints;
查看约束的名字
select constraint_name from user_constraints where table_name=’USERINFO_P’;
更改约束的名字
alter table userinfo_p
rename constraint pk_id to new_pk_id;
3、删除主键约束
(1)alter table userinfo
disable contraint new_pk_id;
(2)alter table userinfo
drop contraint new_pk_id;
(3)alter table userinfo
drop primary key;
三、外键约束
外键约束涉及两个表中字段关系的约束
1、在创建表时设置外键约束
创建主表
create table typeinfo
(typeid varchar2(10) primary key,
typename varchar2(20) );
创建从表
create table userinfo_f
(id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) references typeinfo(typeid) );
insert into typeinfo values(1,1);
insert into typeinfo_f(id,typeid_new) values(1,1);
insert into typeinfo_f(id,typeid_new) values(2,null);
“““““““““““““““““““““““““““““““`
create table userinfo_f2
(id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10),
constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid) );
通过级联删除来创建外键约束
create table userinfo_f3
(id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10),
constraint fk_typeid_new1 foreign key(typeid_new) references typeinfo(typeid) on delete cascade );
2、在修改表时添加外键约束
create table userinfo_f4
(id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) );
alter table userinfo_f4
add constraint fk_typeid_alter foreign key(typeid_new) references typeinfo(typeid);
3、删除外键约束
查看约束的名字,类型,状态
select constraint_name,constraint_type,status from user_constraints where table_name=’USERINFO_4’;
(1) 禁用(启用)外键约束(disable/enable)
alter table userinf0_4
disable constraint fk_typeid_alter;
select constraint_name,constraint_type,status from user_constraints where table_name=’USERINFO_4’;
(2) 彻底删除外键约束
alter table userinf0_4
drop constraint fk_typeid_alter;
四、唯一约束
唯一约束保证字段值的唯一性;
唯一约束与主键约束的区别:主键约束的字段值必须是非空的,唯一约束允许有一个空值。
1、在创建表时设置唯一约束
(1) create table userinfo_u
(id varchar2(10) primary key,
username varchar2(20) unique,
userpwd varchar2(20) );
(2)create table userinfo_u1
(id varchar2(10) primary key,
username varchar2(20) ,
constraint un_username unique(username) );
2、在修改表时添加唯一约束
alter table userinfo_u2
add constraint un_username_new unique(username);
3、删除唯一约束
(1) alter table userinf0_u2
disable constraint un_username_new;
(2) alter table userinf0_u2
drop constraint un_username_new;
五、检查约束
1、在创建表时设置检查约束
(1) create table userinfo_c
(id varchar2(10) primary key,
username varchar2(20),
salary number(5,0) check(salary>0) );
(2) create table userinfo_c1
(id varchar2(10) primary key,
username varchar2(20),
salary number(5,0),
constraint ck_salary check(salary>0) );
2、在修改表时添加检查约束
alter table userinfo_c2
add constraint ck_salary_new check(salary>0);
3、删除检查约束
(1) alter table userinf0_c2
disable constraint ck_salary_new ;
(2) alter table userinf0_c2
drop constraint ck_salary_new ;
注:(1) 除了非空约束只能在列级设置,不能在表级设置外,其他约束既可以在列级设置,又可以在表级设置。
(2) 更改约束的名称
rename constraint old_name to new_name;
(3) 删除约束
对非空约束:
alter table userinfo
modify username varchar2(20) null;
对其他约束:
disable constraint constraint_name;
drop constraint constraint_name;
对主键约束多一种drop primary key;