Oracle之唯一性约束(UNIQUEConstraint)用法详解

1 目标

用示例演示如何创建、删除、禁用和使用唯一性约束。

2 什么是唯一性约束?

唯一性约束指表中一个字段或者多个字段联合起来能够唯一标识一条记录的约束。联合字段中,可以包含空值。

注:在Oracle中,唯一性约束最多可以有32列。

唯一性约束可以在创建表时或使用ALTER TABLE语句创建。

3 唯一性约束和主键的区别

 

主键(Primary Key):所有组成主键的列都不能包含空值。唯一性约束(Unique Constraint):如果唯一性约束由多列组成,其中的部分列可以包含空值。Oracle中不容许在相同列上既创建主键又创建唯一性约束。

 

4 创建表时定义唯一性约束

1)语法:


1
2
3
4
5
6
7
CREATE  TABLE  table_name
(
     column1 datatype  null / not  null ,
     column2 datatype  null / not  null ,
     ...
     CONSTRAINT  constraint_name  UNIQUE  (column1, column2,...,column_n)
);

2)基于单列的唯一性约束示例:

?
1
2
3
4
5
6
7
create  table  tb_supplier
(
   supplier_id          number  not  null
  ,supplier_name        varchar2(50)
  ,contact_name         varchar2(50)
  , CONSTRAINT  tb_supplier_u1  UNIQUE  (supplier_id) --创建表时创建唯一性约束
);

3)基于多列的唯一性约束示例:

?
1
2
3
4
5
6
7
8
create  table  tb_products
(
   product_id        number  not  null ,
   product_name      number  not  null ,
   product_type      varchar2(50),
   supplier_id       number,
   CONSTRAINT  tb_products_u1  UNIQUE  (product_id, product_name)  --定义复合唯一性约束
);

5 使用ALTER TABLE语法创建唯一性约束

1)语法

?
1
2
3
ALTER  TABLE  table_name
ADD  CONSTRAINT  constraint_name
UNIQUE  (column1, column2, ... , column_n);

2)示例准备,先创建表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
drop  table  tb_supplier;
drop  table  tb_products;
 
create  table  tb_supplier
(
   supplier_id          number  not  null
  ,supplier_name        varchar2(50)
  ,contact_name         varchar2(50)
);
 
create  table  tb_products
(
   product_id        number  not  null ,
   product_name      number  not  null ,
   product_type      varchar2(50),
   supplier_id       number
);

3)基于单列的唯一性约束

?
1
2
3
alter  table  tb_supplier
add  constraint   tb_supplier_u1
unique  (supplier_id);

4)基于多列的唯一性约束

?
1
2
3
alter  table  tb_products
add  constraint   tb_products_u1
unique  (product_id,product_name);

6 禁用唯一性约束

1)语法:

?
1
2
ALTER  TABLE  table_name
DISABLE  CONSTRAINT  constraint_name;

2)示例:

?
1
2
ALTER  TABLE  tb_supplier
DISABLE  CONSTRAINT   tb_supplier_u1;

7 使用唯一性约束

1)语法:

?
1
2
ALTER  TABLE  table_name
ENABLE  CONSTRAINT  constraint_name;

2)示例:

?
1
2
ALTER  TABLE  tb_supplier
ENABLE  CONSTRAINT  tb_supplier_u1;

8 删除唯一性约束

1)语法:

?
1
2
ALTER  TABLE  table_name
DROP  CONSTRAINT  constraint_name;

2)示例:

?
1
2
ALTER  TABLE  tb_supplier  DROP  CONSTRAINT  tb_supplier_u1;
ALTER  TABLE  tb_products  DROP  CONSTRAINT  tb_products_u1;

转载: https://blog.csdn.net/baijianjun123456/article/details/51178399

你可能感兴趣的:(Oracle)