一、创建主键的时候,会同时创建唯一性索引
1. 创建表:
SQL> create table t(id int);
Table created
2.为表添加主键约束:
SQL> alter table t add constraint con_pk primary key(id);
Table altered
3.查看oracle数据字典中表T的约束情况:
SQL> select constraint_name,table_name from user_constraints where table_name='T';
CONSTRAINT_NAME TABLE_NAME
------------------------------ ------------------------------
CON_PK T
4.查看oracle数据字典T表的索引情况:
SQL> select index_name,table_name from user_indexes where table_name='T';
INDEX_NAME TABLE_NAME
------------------------------ ------------------------------
CON_PK T
5.结论:创建主键的时候,会同时创建唯一性索引。
二、删除主键的时候,默认会同时删除与之对应的唯一性索引
1.删除主键约束
SQL> alter table t drop constraint con_pk;
Table altered
2.查看约束、索引情况都没有返回值
3.结论:删除主键的时候,会同时删除与之对应的唯一性索引
三、如何在删除主键的时候,保留索引?
SQL>alter table t drop constraint con_pk keep index;
四、与主键对应的唯一性索引,不能被单独删除
SQL>create table t(id int);
SQL>alter table t add constraint con_pk primary key(id);
SQL>drop index con_pk;
ORA-02429: 无法删除用于强制唯一/主键的索引
五、如果先创建了某一列上的唯一索引,则在该列上添加主键约束的时候,会与已存在的索引建立关联关系,删除主键的时候,默认会将此索引删除
SQL>create table t(id int);
SQL>create index index1 on t(id);
SQL>alter table t add constraint con_pk primary key(id);
SQL>alter table t drop constraint con_pk;
此时查看约束、索引情况都没有返回值。