oracle之约束

本文详细介绍了SQL中的五种主要约束:非空约束、主键约束、外键约束、唯一约束及检查约束。每种约束都包括在创建表时及修改表时如何设置的方法,并提供了具体的SQL语句示例。

非空约束,主键约束,外键约束,唯一约束,检查约束

一、非空约束
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值