Oracle主键约束、唯一约束和唯一索引

三世轮回 提交于 2019-12-10 18:25:04

总结如下:

(1)主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除;

          

--建表
create table student(
   stu_name varchar2(30) not null,
   age varchar2(4),
   gender varchar2(2),
   stuno varchar2(10),
   class varchar2(5),
   grade varchar2(5),
   tno varchar2(10)
);
--在创建主键约束、唯一约束的时候,Oracle会隐式的创建一个和该主键约束名字相同的唯一索引
--主键
alter table student add constraint PK_STUNO primary key (stuno);
--删除主键约束
alter table student drop constraint PK_STUNO;
--唯一约束
alter table student add constraint UK_STUNO unique (stuno);
--删除
alter table student drop constraint UK_STUNO;

--如果先在列上创建唯一索引,然后再创建唯一约束,这时Oracle发现此列已经存在唯一索引,就不再自己创建
create unique index IX_STUNO on student(stuno);
alter table student add constraint PK_STUNO primary key (stuno);
--查询索引
select index_name, index_type, uniqueness, tablespace_name
from user_indexes
where table_owner='SCOTT' and table_name = 'STUDENT';

结果:

 

(2)主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空;

(3)相同字段序列不允许重复创建索引;

一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索引来实施完整性约束。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!