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

Oracle | PL/SQL唯一索引(Unique Constraint)用法

1 目标

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

 

2 什么是唯一性约束?

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

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

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

 

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

 

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

 

 

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

1)语法:

 

 
  1. CREATE TABLE table_name

  2. (

  3. column1 datatype null/not null,

  4. column2 datatype null/not null,

  5. ...

  6. CONSTRAINT constraint_name UNIQUE (column1, column2,...,column_n)

  7. );

 

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

 

 

 
  1. create table tb_supplier

  2. (

  3. supplier_id number not null

  4. ,supplier_name varchar2(50)

  5. ,contact_name varchar2(50)

  6. ,CONSTRAINT tb_supplier_u1 UNIQUE (supplier_id)--创建表时创建唯一性约束

  7. );

 

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

 

 
  1. create table tb_products

  2. (

  3. product_id number not null,

  4. product_name number not null,

  5. product_type varchar2(50),

  6. supplier_id number,

  7. CONSTRAINT tb_products_u1 UNIQUE (product_id, product_name) --定义复合唯一性约束

  8. );

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

1)语法

 

 
  1. ALTER TABLE table_name

  2. ADD CONSTRAINT constraint_name

  3. UNIQUE (column1, column2, ... , column_n);

 

2)示例准备,先创建表

 

 
  1. drop table tb_supplier;

  2. drop table tb_products;

  3.  
  4. create table tb_supplier

  5. (

  6. supplier_id number not null

  7. ,supplier_name varchar2(50)

  8. ,contact_name varchar2(50)

  9. );

  10.  
  11. create table tb_products

  12. (

  13. product_id number not null,

  14. product_name number not null,

  15. product_type varchar2(50),

  16. supplier_id number

  17. );

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

 

 
  1. alter table tb_supplier

  2. add constraint tb_supplier_u1

  3. unique (supplier_id);

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

 

 
  1. alter table tb_products

  2. add constraint tb_products_u1

  3. unique (product_id,product_name);

6 禁用唯一性约束

1)语法:

 

 
  1. ALTER TABLE table_name

  2. DISABLE CONSTRAINT constraint_name;

2)示例:

 

 
  1. ALTER TABLE tb_supplier

  2. DISABLE CONSTRAINT tb_supplier_u1;

 

7 使用唯一性约束

1)语法:

 

 
  1. ALTER TABLE table_name

  2. ENABLE CONSTRAINT constraint_name;

2)示例:

 

 
  1. ALTER TABLE tb_supplier

  2. ENABLE CONSTRAINT tb_supplier_u1;

 

8  删除唯一性约束

1)语法:

 

 
  1. ALTER TABLE table_name

  2. DROP CONSTRAINT constraint_name;

2)示例:

 

 
  1. ALTER TABLE tb_supplier DROP CONSTRAINT tb_supplier_u1;

  2. ALTER TABLE tb_products DROP CONSTRAINT tb_products_u1;

 

---------------------------------------------------------------------------------------------------------

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

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!

----------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值