主键和唯一索引

本文详细介绍了在Oracle数据库中创建主键时如何同时创建唯一性索引,以及删除主键时如何同时删除与之对应的唯一性索引。还探讨了如何在删除主键时保留索引,并解释了与主键对应的唯一性索引不能被单独删除的情况。通过实例演示了这些操作的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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;

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值