1、  分别用两种方法创建主键 create table test1(id number,name varchar2(10)); insert into test1 values(1,'t1'); insert into test1 values(2,'t2'); commit; alter table test1 add constraint pk_test1  primary key(id);   create table test2(id number,name varchar2(10)); insert into test2 values(3,'t1'); insert into test2 values(4,'t2'); commit; create unique index pk_test2 on  test2(id); alter table test2 add constraint pk_test2 primary key(id);   1)  查看约束及索引 select table_name,constraint_name,constraint_type,index_name from user_constraints uc where uc.table_name in ('TEST1','TEST2');   TEST1  PK_TEST1        P          PK_TEST1 TEST2  PK_TEST2        P          PK_TEST2   证明目前两个表上都有一个主键约束,而且都有一个索引。   select table_name,index_name,index_type,uniqueness from user_indexes ui where ui.table_name in ('TEST1','TEST2');   TEST1  PK_TEST1        NORMAL         UNIQUE TEST2  PK_TEST2        NORMAL         UNIQUE   两个索引也都是唯一索引。   此时似乎很难区分两个索引的区别。 2、区别: 1)高可用分析:第一种情况下是Oracle在创建主键约束的自动创建索引,后一种是手动创建索引,然后再基于此唯一索引创建主键约束。在并发事务量较高的情况下,后一种情况可以先以online方式创建索引,减少表的读写阻塞。   2)  删除方式不同:第一种情况可通过删除约束进而删除索引。 alter table test1 drop constraint pk_test1; alter table test2 drop constraint pk_test2;   select table_name,index_name,index_type,uniqueness  from user_indexes ui where ui.table_name in ('TEST1','TEST2');   1  TEST2 PK_TEST2    NORMAL      UNIQUE   发现删除约束并不能删除通过第二种方式建的索引,Oracle提供添加drop index。 alter table test2 drop constraint pk_test2 drop index   3)区分存在的主键的创建方式    可通过查询sys.ind$视图的PROPERTY字段获得,此字段定义可通过$ORACLE_HOME/rdbms/admin/sql.bsp         property      number not null,    /* immutable flags for life of the index */                                                             /* unique : 0x01 */                                                        /* partitioned : 0x02 */                                                            /* reverse : 0x04 */                                                         /* compressed : 0x08 */                                                         /* functional : 0x10 */                                               /* temporary table index: 0x20 */                          /* session-specific temporary table index: 0x40 */                                               /* index on embedded adt: 0x80 */                      /* user said to check max length at runtime: 0x0100 */                                               /* domain index on IOT: 0x0200 */                                                       /* join index : 0x0400 */            /* functional index expr contains a PL/SQL function : 0x0800 */                         /* The index was created by a constraint : 0x1000 */                            /* The index was created by create MV : 0x2000 */   索引类型分别用对应的16进制来表示,而property存储的是十进制,可通过进制转换获得索引的真正类型。   select si.PROPERTY,ui.index_name from sys.ind$ si,user_indexes ui,user_objects uo where si.obj#=uo.OBJECT_ID and ui.index_name=uo.OBJECT_NAME and ui.index_name in ('PK_TEST1','PK_TEST2')   PK_TEST1    4097 PK_TEST2    1     Pk_test1对应的16进制为1001,有1000+1,即索引性质:unique+ The index was created by a constraint,而PK_test2则为unique索引。

oracle数据库建立主键约束,数据库-Oracle主键约束和唯一索引的黑与白相关推荐

  1. oracle数据库主键自增序列_【oracle】oracle数据库建立序列、使用序列实现主键自增...

    2.建立序列 -- Create sequence create sequence SEQ_SHIP_IMAGE minvalue 20 maxvalue 999999999999999999 sta ...

  2. oracle 强制索引_当唯一索引遇见分布式数据库

    这是Tank的第18篇文章 1 关于分片键 分布式数据库通过将表的数据打散,按一定规则将数据分布在多个独立的主机上,常见的策略如HASH.RANGE.LIST等分布方式.不考虑中间件的解决方案,在原生 ...

  3. oracle 主键、唯一键值、唯一索引关系

    一般都认为一条数据在表中通过主键字段来唯一确定,但是有时候表中并不存在主键,但是重复数据插入也会报错,查看表结构发现,通过建立唯一键值也可以达到之一目的,但是最近有遇到数据库中没有唯一键.主键,重复数 ...

  4. oracle主键 唯一索引的区别,Oracle 主键、唯一键与唯一索引的区别

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

  5. oracle中主键和唯一索引的区别说明

    上周六去参加上海Oracle WDP俱乐部沙龙的一次交流,其中提到了关于"Oracle中主键和唯一索引的区别",基本上大家都可以说上几个,在网上也可以找到,但是总感觉不太全,根据自 ...

  6. Oracle索引梳理系列(七)- Oracle唯一索引、普通索引及约束的关系

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  7. 外键以及数据库的增删改查你了解多少

    前言 目录 1.SQL字段数据类型 一键获取Mysql合集知识点文档 2.查看数据库信息语句 3.SQL语句 创建.删除 数据库 数据表 向表中添加.删除 记录.查询记录 修改表名,添加.修改.删除 ...

  8. 主键、唯一键与唯一索引的区别

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

  9. 索引,主键,唯一索引,联合索引 的区别

    简单描述MySQL中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用 ...

最新文章

  1. [原] XAF How to Edit multiple objects in a ListViewAndDetailView
  2. 类的公有类型(public)和私有类型(private)
  3. js对象数组计算总计_如何计算数组中的对象
  4. [机器学习-原理篇]支持向量机(SVM)深入理解
  5. mysql搜索_查询mysql的搜索引擎
  6. springmvc配置不拦截静态资源
  7. 摩托罗拉里程碑2刷android 2.3.4
  8. 《推荐系统实战(一)》基于统计的电影推荐系统(tmdb-5000数据集,数据清洗、特征提取、搭建模型等详细过程)
  9. K210车牌归属地识别[获取图像+训练+识别效果演示]
  10. 基础线性代数知识点总结与回顾(三):向量空间和二次型
  11. 【Unity】入门级Unity安装教程
  12. [JZOJ3461] 小麦亩产一千八
  13. 服务器系统安装打印机,windows server 2012 R2安装打印机驱动提示系统资源不足
  14. 交流电机,如何用低成本的方案测试电机堵转?
  15. android 生成bks_创建 Android bks证书
  16. html5 骰子滚动,CSS3画一个滚动的骰子
  17. 人机融合的科幻与现实
  18. 上周AI热点回顾:AI“模拟”出暗物质、AI挖掘毕加索秘密、CPU在大型神经网络超越V100 GPU...
  19. 【ELT.ZIP】OpenHarmony啃论文俱乐部——多维探秘通用无损压缩
  20. 计算机组成原理(3)-哈工大

热门文章

  1. 学习Spring Security
  2. 关联分析算法(二)——FP-growth算法与python用法
  3. idea 2017 创建java_IDEA2017.3.3创建第一个javaweb项目及tomcat部署实战
  4. WebsSocket
  5. jquery 性能优化与实践
  6. Frameworks.Entity.Core 1
  7. Java自学手记——多态
  8. 博客园山寨版(asp.net mvc 开源)
  9. A browser for WinCE/Windows base WebKit. (zz)
  10. C#实现 获取指定字节长度 中英文混合字符串 的方法