什么是约束?
约束是Oracle提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据库的完整性。
constraint constraint_name <约束>(字段)
约束:
primary key constraint——主键约束:表级约束,值不能为NULL,不能重复,一个表只能有一个
如设定主键约束:constraint id_pk primary key(sid)
修改表添加主键约束:alter table student add constraint id_pk primary key(sid);
unique constraint——唯一性约束:指定一个或多个列的组合值具有唯一性
例如:
create table student(
sid number(8,0),
name varchar2(20),
sex char(2) constraint nn_sex,
birthday date,
address varchar2(50),
email varchar2(50) unique,
cardid varchar2(18),
constraint cardid_pk unique(cardid)//指定约束的名称
);
修改表时添加唯一性约束:alter table student add constraint cardid_pk unique(cardid);
禁用唯一性约束:alter table student disable constraint cardid_pk;
删除唯一性约束:alter table student drop constraint cardid_pk;
default constraint——默认约束
not null constraint——非空约束:列级约束,确保列不能为NULL
例如:
create table student(
sid number(8,0),
name varchar2(20) not null,//推荐
sex char(2) constraint nn_sex not null,//指定约束的名称
birthday date,
address varchar2(50),
constraint sid_pk primary key(sid)//指定约束的名称
);
修改表添加约束:alter table student add [constraint constraint_name] constraint_type (column);
添加非空约束:alter table student modify (name varchar2(20) not null);
check constraint——检查约束:限制输入值
创建表时设置检查约束:
create table student(
sid number(8,0),
name varchar2(20),
sex char(2) check(sex='男'or sex='女'),//列级添加约束,两者选其一
birthday date,
address varchar2(50),
constraint ck_sex check(sex='男' or sex='女')//表级添加约束,两者选其一
);
修改表是添加检查约束:alter table student add constraint ck_sex check(sex='男' or sex='女');
禁用启用检查约束:alter table student disable/enable constraint ck_sex;
删除约束:alter table student drop constraint ck_sex;
foreign key constraint——外部键约束:是用于建立或者加强两个表数据之间的链接的一列或多列,通常是先创建的表是主表,后是从表。
例如:
//主表
create table department(
depid varchar2(10) primary key,
depname varchar2(30)
);
//从表
create table student(
sid number(8,0);
name varchar2(20);
sex char(2)
birthday date,
address varchar2(50),
depid varchar2(10) references department(depid)
)
//或
create table student(
sid number(8,0);
name varchar2(20);
sex char(2)
birthday date,
address varchar2(50),
depid varchar2(10) ,
constraint fk_depid foreign key(depid) references department(depid) on delete cascade//级联删除
)
修改表时添加外接约束:alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;
删除约束:
1、禁用或开启:alter table student disable|enable constraint constraint_name
2、永久删除:alter table student drop constraint constraint_name
3、删除主键约束的格式:alter table student drop primary key
4、另一只方面常用的删除非空约束:alter table table_name modify column_name datatype null;
网友评论