一、Oracle数据库约束
(一)约束的概念作用
- 约束是可以更好的保证数据库数据的完整性和一致性的一套机制。
- 约束可以限制加入表的数据的类型。
- 如果存在依赖关系,约束可以防止错误的删除数据,也可以级联删除数据。
数据库的约束可以认为是对表的数据的一种规则。
(二)约束创建的时机
- 创建表的时候,同时创建约束。
- 表结构创建完成后,可以再添加约束。
(三)常见的约束类型
- NOT NULL 非空约束 not null
- UNIQUE 唯一约束 unique
- PRIMARY KEY 主键约束 primary key
- FOREIGN KEY 外键约束 foreign key
- DEFAULT 默认约束 default
- CHECK—用来检查一个字段的值是否符合某表达式,表达式的结果必须是布尔值。 check
(四)添加约束
-------------约束-----------------
--主键约束
--添加主键方式一:不推荐
create table stuinfo
(
stuno int primary key,
stuname varchar2(20)
);
--添加主键方式二:推荐
create table stuinfo
(
stuno int,
stuname varchar2(20),
constraint pk_stuno primary key(stuno)
);
--添加主键方式三:推荐,(表创建完了之后,添加主键)
create table stuinfo
(
stuno int,
stuname varchar2(20)
);
--添加主键
alter table stuinfo add
constraint pk_stuno primary key(stuno);
--删除主键
alter table stuinfo drop primary key;
--学生姓名唯一约束
alter table student add
constraint uq_stuname unique(stuname);
--非空约束
alter table student modify phone not null;
--默认约束和检查/条件约束
create table stuinfo
(
stuno int,
stuname varchar2(20),
sex varchar2(20) default('男'),--当sex没有值的时候,用‘男’
sex1 varchar2(20) check(sex1 in('男','女')),
sex2 varchar2(20) check(sex2='男' or sex2 = '女'),
age int check(age between 0 and 80),
age1 int check(age1 >0 and age1<150)
);
--外键约束
--stuinfo的stuno既是主键又是外键
alter table student add constraint pk_student_stuno primary key(stuno);
Alter table stuinfo add constraint fk_stuno foreign
key(stuno) references student(stuno);
(五)约束的应用选择
在应用开发中,主键约束一般要设置,其他如非空、唯一、默认值、检查等约束,可以根据实际情况来添加。而外键约束是否要设置,是存在一点争议的。(争议在性能上)
一般建议:
- 在大型系统中(性能要求不高,安全要求高),可以使用外键;在大型系统中(性能要求高,安全自己控制),不用外键;小系统随便。
- 不用外键的话,可以用程序控制数据一致性和完整性,可以在代码的数据层通过代码来保证一致性和完整性。
- 用外键要适当,不能过分追求。
以下推荐个人文章
[亲测]Oracle数据库安装与配置