oracle 唯一约束 和 唯一索引

唯一性约束

唯一性约束指表中一个字段或者多个字段联合起来能够唯一标识一条记录的约束。联合字段中,可以包含空值。
注:在Oracle中,唯一性约束最多可以有32列。
唯一性约束可以在创建表时或使用ALTER TABLE语句创建。

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

1、创建联合约束(下面该条sql的作用是STAFF_ID, FIRST_NAME, LAST_NAME不能同时相等)

eg:alter table T_GJCX_EMP

  add constraint T_GJCX_EMP_JOINT_KEY unique (STAFF_ID, FIRST_NAME, LAST_NAME)
(1)基于单列的唯一性约束
alter table tb_supplier
add constraint  tb_supplier_u1
unique (supplier_id);

(2)基于多列的唯一性约束
alter table tb_products
add constraint  tb_products_u1
unique (product_id,product_name);

2 、禁用唯一性约束
(1)语法:
ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;
(2)示例:
ALTER TABLE tb_supplier
DISABLE CONSTRAINT  tb_supplier_u1;

问题:

创建表的唯一性索引【CREATE UNIQUE INDEX idx_ut ON t(NVL2(NULLIF(b,3),a,NULL),NVL2(NULLIF(b,3),b,NULL),NVL2(NULLIF(b,3),c,NULL))】

和创建表的唯一性约束的异同:
唯一约束可以用于保证在基表中增加一条记录时,一个或多个列值是唯一的。如果已经给一个或以上列定义了唯一约束,那么任何操作都不可能替换这些列中的复制的值。尽管唯一的、系统要求的索引是用来加强唯一约束,但是定义唯一约束和创建唯一索引之间还是有区别的。即使这二者之间都可以增强唯一性,唯一索引允许NULL值并且一般不能用在指示性约束中。换句话说,唯一约束不允许NULL值并能在外键规范中使用( "NULL"的意思就是列值不明确并且和其他值不同,还包括其他NULL值)。

总结:唯一索引就是唯一索引,唯一约束是通过唯一索引来实现的,创建唯一约束时会创建一个唯一索引 前提条件是约束列上没有唯一索引。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值