主键和唯一索引

来源:互联网 发布:js广告特效 编辑:程序博客网 时间:2024/05/11 06:13

一、创建主键的时候,会同时创建唯一性索引

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;

  此时查看约束、索引情况都没有返回值。

 

原创粉丝点击