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;
---------------------------------------------------------------------------------------------------------

如果您们在尝试的过程中遇到什么问题或者我的代码有错误的地方,请给予指正,非常感谢!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值