非空约束:只能在列级设置,不能在表级设置;
Create table userinfo (id number not null);
创建表示设置非空约束;
alter table userinfo modify username varchar2(20) not null
在修改表时添加非空约束注意当表没有值时才可以设置;
alter table userinfo modify username varchar2(20) null;
在修改表时删除非空约束
主键约束:
Create table userinfo(id number primary key,username varchar2(20));
在创建表时设置主键约束;
Create table userinfo1(id number,username varchar2(20) constraint pk_id_username primary key(id,username));
设置为联合主键:
alter table userinfo add constraint pk_id primary key(id);
在修改表时添加主键约束;
alter table userinfo rename constraint pk_id to new_pk_id;
更改约束的名称;
alter table userinfo disable constraint new_pk_id;
禁用主键约束(以后可以启用);
alter table userinfo drop constraint new_pk_id
删除主键约束
select constraint_name from user_constraints where table_name=’username’;
查看表中含有的所有约束名称
外键约束:
//方法一(创建表时加入外键约束)
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));
注意数据类型必须一致,
//方法二
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_new foreign key(typeid_new)
references typeinfo(typeid) on delete cascade);
修改表加入外键约束
alter table userinfo_f4
add constraint fk_typeid_new foreign key(typeid_new)
references typeinfo(typeid) on delete cascade);
修改表使能外键约束
alter table userinfo_f4
disable/enable constraint fk_typeid_new;
修改表删除外键约束
alter table userinfo_f4
drop constraint fk_typeid_new;
唯一约束:保证字段值的唯一性
唯一约束和主键约束的区别:
- 主键字段值必须是非空的,唯一约束允许有一个空值;
- 主键只有一个,唯一约束可以有多个;
create table userinfo_u1
(id varchar2(10) primary key,
username varchar2(20) unique,
userpwd varchar2(20));
在创建表时(列级约束)设置唯一约束
create table userinfo_u2
(id varchar2(10) primary key,
username varchar2(20),
userpwd varchar2(20)),
constraint un_username unique(username));
在创建表时(表级约束)设置唯一约束
alter table userinfo_u3
add constraint un_username unique(username));
在修改表时设置唯一约束
alter table userinfo_u3
disable/enable constraint un_username;
修改表使能唯一约束
alter table userinfo_u3
drop constraint un_username;
在修改表时删除唯一约束
检查约束:表中的值更具有实际意义
create table userinfo_c1
(id varchar2(10) primary key,
username varchar2(20) unique,
salary number(5,0) check(salary>0));
在创建表时(列级约束)设置检查约束
create table userinfo_c2
(id varchar2(10) primary key,
username varchar2(20),
salary number(5,0),
constraint ck_salary check(salary>0));
在创建表时(表级约束)设置检查约束
alter table userinfo_c3
add constraint ck_salary unique(username));
在修改表时设置检查约束
alter table userinfo_c3
disable/enable constraint ck_salary;
修改表使能检查约束
alter table userinfo_c3
drop constraint ck_salary;
在修改表时删除检查约束