Oracle约束
1. 什么是约束
1.1 约束定义
约束: 是强加在表上的规则或条件。确保数据库满足业务规则。保证数据库的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作。约束可以是列一级别的,也可以是表级别的。定义约束时没有给出约束的名字,ORACE系统将为该约束自动生成一个名字,其格式为SYS_Cn,其中n为自然数(强烈建议各位在创建表或增加约束时,给约束定义名称。)
1.2 约束功能
**约束的功能:**实现一些业务规则,防止无效的垃圾数据进入数据库,维护数据库的完整性(完整性指正确性与一致性)。从而使数据库的开发和维护更加容易。
2. 约束分类
约束分为:非空(NOT NULL)约束、唯一(UNIQUE)约束 、主键(PRIMARY KEY)约束、外键(FOREIGN KEY)约束、条件(CHECK)约束。
2.1 not null约束
**非空(NOT NULL)约束:**顾名思义,所约束的列不能为NULL值。否则就会报错。
举例:
create table user1(id number, name varchar2(30) not null);
insert into user1 values(001, ''); //会报错
2.2 unique 唯一
**唯一(UNIQUE)约束:**在表中每一行中所定义的这列或者些列的值都不能相同。必须保证唯一性,否则就会违反约束条件。
用于指定列的值不能重复,可以为null
举例:
create table user2(id number unique, name varchar2(30));
insert into user2 values(1,111); // id 输入重复的值是会报错的
注意:Oracle中unique可以为null,而且允许多行为null
2.3 primary key 主键
**主键(PRIMARY KEY)约束:**唯一的标识表中的每一行,不能重复,不能为空。创建主键或唯一约束后,Oracle会自动创建一个与约束同名的索引(UNIQUENES为UNIQUE唯一索引)。需要注意的是:每个表只能有且有一个主键约束。
举例:
create table user3(id number primary key, name varchar2(30));
insert into user3 values(1, 111);
insert into user3 values(1, 111); // 报错,唯一性
insert into user3 values(null, 111