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

来源:互联网 发布:淘宝收费标准 编辑:程序博客网 时间:2024/06/07 05:31

原文链接:http://blog.csdn.net/jssg_tzw/article/details/40981393


1 目标

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


2 什么是唯一性约束?

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

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

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


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

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


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

1)语法:

[sql] view plain copy
  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)基于单列的唯一性约束示例:

[sql] view plain copy
  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)基于多列的唯一性约束示例:

[sql] view plain copy
  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)语法

[sql] view plain copy
  1. ALTER TABLE table_name  
  2. ADD CONSTRAINT constraint_name  
  3. UNIQUE (column1, column2, ... , column_n);  

2)示例准备,先创建表

[sql] view plain copy
  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)基于单列的唯一性约束

[sql] view plain copy
  1. alter table tb_supplier  
  2. add constraint  tb_supplier_u1  
  3. unique (supplier_id);  

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

[sql] view plain copy
  1. alter table tb_products  
  2. add constraint  tb_products_u1  
  3. unique (product_id,product_name);  

6 禁用唯一性约束

1)语法:

[sql] view plain copy
  1. ALTER TABLE table_name  
  2. DISABLE CONSTRAINT constraint_name;  

2)示例:

[sql] view plain copy
  1. ALTER TABLE tb_supplier  
  2. DISABLE CONSTRAINT  tb_supplier_u1;  

7 使用唯一性约束

1)语法:

[sql] view plain copy
  1. ALTER TABLE table_name  
  2. ENABLE CONSTRAINT constraint_name;  

2)示例:

[sql] view plain copy
  1. ALTER TABLE tb_supplier  
  2. ENABLE CONSTRAINT tb_supplier_u1;  

8  删除唯一性约束

1)语法:

[sql] view plain copy
  1. ALTER TABLE table_name  
  2. DROP CONSTRAINT constraint_name;  

2)示例:

[sql] view plain copy
  1. ALTER TABLE tb_supplier DROP CONSTRAINT tb_supplier_u1;  
  2. ALTER TABLE tb_products DROP CONSTRAINT tb_products_u1;  

阅读全文
0 0
原创粉丝点击