Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释

时间:2022-03-22 11:30:53

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

1 目标

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

2 什么是唯一性约束?

唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束。

联合字段中,可以包括空值。

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

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

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

  • 主键(Primary Key):全部组成主键的列都不能包括空值。
  • 唯一性约束(Unique Constraint):假设唯一性约束由多列组成,当中的部分列能够包括空值。
  • Oracle中不容许在同样列上既创建主键又创建唯一性约束。

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

1)语法:

CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name UNIQUE (column1, column2,...,column_n)
);

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

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)基于多列的唯一性约束演示样例:

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)语法

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
UNIQUE (column1, column2, ... , column_n);

2)演示样例准备,先创建表

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)基于单列的唯一性约束

alter table tb_supplier
add constraint tb_supplier_u1
unique (supplier_id);

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

alter table tb_products
add constraint tb_products_u1
unique (product_id,product_name);

6 禁用唯一性约束

1)语法:

ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;

2)演示样例:

ALTER TABLE tb_supplier
DISABLE CONSTRAINT tb_supplier_u1;

7 使用唯一性约束

1)语法:

ALTER TABLE table_name
ENABLE CONSTRAINT constraint_name;

2)演示样例:

ALTER TABLE tb_supplier
ENABLE CONSTRAINT tb_supplier_u1;

8  删除唯一性约束

1)语法:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

2)演示样例:

ALTER TABLE tb_supplier DROP CONSTRAINT tb_supplier_u1;
ALTER TABLE tb_products DROP CONSTRAINT tb_products_u1;
---------------------------------------------------------------------------------------------------------

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

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

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

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