Oracle 惟一性约束
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 惟一性约束
惟一性约束强调所在的列不允许有相同的值。但是,它的定义比主键约束弱,即它所在的列允许空值。UNIQUE约束的主要作用是在保证除主键列外、其他列值的惟一性。
在一个表中,根据实际情况可能有多个列的数据都不允许存在相同值。例如,在EMPLOYEES表中的EMAIL等列是不允许重复的,但是由于在一个表中最多只能有一个主键约束存在,那么如何解决这种多个列都不允许重复数据存在的问题?这就是惟一性约束的作用。
例如,下面的语句重新定义了EMPLOYEES表,并为该表的EMIL列定义名为EMP_UK 的惟一性约束:
SQL> create table employees(
2 empno number(10) primary key,
3 ename varchar2(20) not null,
4 sex char(2),
5 salary number(8,2),
6 hiredate date default sysdate,
7 job varchar2(10),
8 email varchar2(50) constraint emp_uk unique,
9 deptno number(3) not null);
表已创建。
前面曾介绍过,UNIQUE约束可以保证列中不存在重复的值,但是可以插入多个NULL 值。下面的示例将试图在EMPLOYEES表的EMAIL列添加两行NULL值:SQL> insert into employees(empno,ename,email,deptno)
2 values(1220,'刘丽',null,10);
已创建 1 行。
SQL> insert into employees(empno,ename,email,deptno)
2 values(1221,'王丽',null,10);
已创建 1 行。
为了防止向UNIQUE约束列添加NULL值,可以在该列上再添加NOT NULL约束。在向UNIQUE约束列添加NOT NULL约束后,其功能基本上就相当于主键PRIMARY KEY 约束。
使用ALTER TABLE语句添加UNIQUE约束的语句形式如下:
alter table table_name
add constraint constraint_name unique (column1[,column2]);
同样,使用ALTER TABLE语句也可以删除UNIQUE约束。例如,下面的语句删除创建的UNIQUE约束EMP_UK:
SQL> alter table employees
2 drop constraint emp_uk;