精华内容
下载资源
问答
  • oracle创建唯一性索引
    千次阅读
    2020-05-12 18:34:45
    • oracle创建唯一索引
    Create UNIQUE Index PK_INSTANCE_ID on TB_DD_APPROVAL_OUT
    (
     INSTANCE_ID
    )
    
    
    • oracle基于多列的唯一性约束
     alter table tb_products  
     add constraint  tb_products_u1  
     unique (product_id,product_name);  
    
    • 基于单列的唯一性约束示例
    create table tb_supplier  
    (  
      supplier_id          number not null  
     ,supplier_name        varchar2(50)  
     ,contact_name         varchar2(50)  
     ,CONSTRAINT tb_supplier_u1 UNIQUE (supplier_id)--创建表时创建唯一性约束  
    );  
    

    oracle创建唯一约束与创建唯一索引有所不

    • 创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。

    • 创建唯一索引只会创建一个唯一索引,不会创建Constraint。
      也就是说其实唯一约束是通过创建唯一索引来实现的。对于开发人员来说这两者有什么区别吗?好像没有。都是不能插入重复的值。在删除时这两者也有一定的区别,删除唯一约束时可以只删除约束而不删除对应的索引,所以对于的列还是必须唯一的,而删除了唯一索引的话就可以插入不唯一的值。

    更多相关内容
  • 唯一性约束通过唯一性...在没有索引的情况下,创建唯一性约束会自动创建一个唯一性索引,但Oracle官方建议将唯一性约束和索引分开,这该怎么理解呢?原来在创建唯一性约束时默认创建唯一性索引会随着唯一性约束DIS

    唯一性约束通过唯一性索引来实现?我觉得这说法不对。

    对于唯一性约束,索引是必须存在的,唯一性约束本质上是通过索引来保证的,但不一定是唯一性索引。

    唯一性约束允许有NULL值,唯一性约束的列可允许有多个NULL值。唯一性约束通过BTREE索引实现,而BTREE索引是不会包含NULL值,但使用NULL值过滤时不会走索引。

    在没有索引的情况下,创建唯一性约束会自动创建一个唯一性索引,但Oracle官方建议将唯一性约束和索引分开,这该怎么理解呢?原来在创建唯一性约束时默认创建的唯一性索引会随着唯一性约束DISABLE或DROP而删除,我们以三个实验来证明这个结论。

    一、创建唯一性约束时默认创建唯一性索引

    通过创建唯一性约束时默认创建唯一性索引,之后DISABLE唯一性约束,观察唯一性索引是否还存在。

    CREATE TABLE TEST (ID NUMBER, NAME VARCHAR2(30));

    ALTER TABLE TEST ADD CONSTRAINT CON_TEST_ID_UQ UNIQUE(ID);

    查看索引

    SELECT Index_Name, Uniqueness, Index_Type

      FROM User_Indexes

     WHERE Table_Name = 'TEST';

    可以看到,默认创建了一个同名的唯一性索引

    查看唯一性约束

    SELECT Owner, Constraint_Name, Table_Name, Generated, Index_Name

      FROM User_Constraints

     WHERE Table_Name = 'TEST';

    唯一性约束CON_TEST_ID_UQ绑定了唯一性索引CON_TEST_ID_UQ

    我们DISABLE这个唯一性约束。

    ALTER TABLE TEST DISABLE CONSTRAINT CON_TEST_ID_UQ;

    再次查看约束

    再次查看索引,发现CON_TEST_ID_UQ索引已经不见了

    二、创建唯一性索引后创建唯一性约束

    先创建唯一性索引,然后创建唯一性约束,之后DISABLE唯一性约束,观察唯一性索引是否还存在。

    CREATE TABLE TEST1 (ID NUMBER, NAME VARCHAR2(30));

    CREATE UNIQUE INDEX IDX_TEST1_ID_UQ ON TEST1(ID);

    ALTER TABLE TEST1 ADD CONSTRAINT CON_TEST1_ID_UQ UNIQUE(ID);

    查看唯一性索引

    SELECT Index_Name, Uniqueness, Index_Type

      FROM User_Indexes

     WHERE Table_Name = 'TEST1';

    查看唯一性约束

    SELECT Owner, Constraint_Name, Table_Name, Generated, Index_Name

      FROM User_Constraints

     WHERE Table_Name = 'TEST1';

    可以看到,唯一性约束CON_TEST1_ID_UQ与唯一性索引IDX_TEST1_ID_UQ绑定起来了。

    我们DISABLE这个唯一性约束CON_TEST1_ID_UQ,再次查看唯一性约束和索引的情况,发现唯一性索引仍存在。

     

    三、创建普通索引后创建唯一性约束

    先创建普通索引,然后创建唯一性约束,观察唯一性约束是否能成功建立。之后DISABLE唯一性约束,观察索引是否还存在。

    CREATE TABLE TEST2 (ID NUMBER, NAME VARCHAR2(30));

    CREATE INDEX IDX_TEST2_ID ON TEST2(ID);

    ALTER TABLE TEST2 ADD CONSTRAINT CON_TEST2_ID_UQ UNIQUE(ID);

    查看索引

    SELECT Index_Name, Uniqueness, Index_Type

      FROM User_Indexes

     WHERE Table_Name = 'TEST2';

    查看唯一性约束

    SELECT Owner, Constraint_Name, Table_Name, Generated, Index_Name

      FROM User_Constraints

     WHERE Table_Name = 'TEST2';

    发现唯一性约束CON_TEST2_ID_UQ也建立成功了,并且和普通索引IDX_TEST2_ID绑定了。

    我们DISABLE唯一性约束CON_TEST2_ID_UQ,查看唯一性约束和索引的情况,发现普通索引IDX_TEST2_ID也仍存在。

    四、结论

    由以上实验我们可以得出以下几个结论。

    1. 创建唯一性约束时默认创建的唯一性索引会随着唯一性约束DISABLE或DROP消失。
    2. 创建唯一性约束并不一定会创建索引,也可以使用现有的索引;
    3. 唯一性约束并不一定需要唯一性索引;

    在生产环境中,如果使用默认的唯一性索引,当唯一性约束需要DISABLE时,索引失效将会造成很大的问题,所以建议将唯一性约束与索引分开。

    展开全文
  • Oracle 创建唯一索引和非唯一索引

    千次阅读 2020-03-03 17:02:01
    唯一索引 生产环境已经存在且数据量不大的表 CREATE index "索引名" on "表名"("字段名") tablespace "表空间名" online; 举例: CREATE index IDX_WF_ORDER_CREATE_TIME on WF_ORDER(CREATE_TIME) tablespace ...

    唯一索引

    1. 生产环境已经存在且数据量不大的表
    CREATE unique index "索引名" on "表名"("字段名")  tablespace "表空间名" online;
    

    举例:

     CREATE unique index IDX_WF_ORDER_CREATE_TIME on WF_ORDER(CREATE_TIME)  tablespace TBS_MREAD_IDX online;
    
    1. 新创建的表 建立索引 举例:
    -- 创建表
    CREATE TABLE CON_CONTENT_CHECK_PROCESS_STAT
    (
      AUDITBATCHID NUMBER(19) NOT NULL, 
      SUBMIT_TIME Date NOT NULL,
      CALLBACK_TIME Date,
      MACHINEAUDITSTATUS NUMBER(1) NOT NULL, 
      MATCH_KEY Varchar2(64) NOT NULL,
      RETRYNUM NUMBER(2) NOT NULL
      )TABLESPACE TBS_MREAD_DAT;
      
    ---创建主键 
    ALTER TABLE CON_CONTENT_CHECK_PROCESS_STAT  ADD CONSTRAINT CON_CONTENT_CHECK_PROCE_ST_PK  PRIMARY KEY (AUDITBATCHID) USING INDEX TABLESPACE TBS_MREAD_IDX;
    
    --添加索引
    CREATE unique INDEX CON_CONTENT_CHECK_PROCE_ST_SX ON CON_CONTENT_CHECK_PROCESS_STAT (MACHINEAUDITSTATUS) TABLESPACE TBS_MREAD_IDX;
    CREATE unique INDEX CON_CONTENT_CHECK_PROCE_ST_TX ON CON_CONTENT_CHECK_PROCESS_STAT (SUBMIT_TIME) TABLESPACE TBS_MREAD_IDX;
    CREATE unique INDEX CON_CONTENT_CHECK_PROCE_ST_NX ON CON_CONTENT_CHECK_PROCESS_STAT (RETRYNUM) TABLESPACE TBS_MREAD_IDX;
    

    非唯一索引

    去掉唯一索引中的unique关键字即可

    展开全文
  • oracle 创建 唯一索引和非唯一索引

    万次阅读 2017-09-16 13:03:10
    1、打开navicat premium ,打开准备创建索引的数据库的查询编辑器; 2、输入命令:CREATE UNIQUE INDEX 索引名 on 表名(想要创建索引的列名) TABLESPACE 表空间名; CREATE UNIQUE INDEX gcsj0917 ON VEH_...

    步骤如下:

    一、创建唯一索引:

    1、打开navicat premium ,打开准备创建索引的数据库的查询编辑器;

    2、输入命令:CREATE UNIQUE INDEX  索引名 on 表名(想要创建索引的列名) TABLESPACE 表空间名;

    CREATE UNIQUE INDEX gcsj0917 ON VEH_PASSREC_08200916 (GCSJ) TABLESPACE USERS

    如果不知道表空间名怎么查,见3;

    3、查询表空间名、文件ID、字节大小、文件名 

    selecttablespace_name,file_id,bytes/1024/1024,file_name  from dba_data_files order by file_id;


    二、创建非唯一索引:

    1、将unique去掉即可

    CREATE INDEX 索引名 on 表名(列名 DESC)


    展开全文
  • oracle唯一索引

    千次阅读 2022-04-12 11:22:47
    为NULL的字段可以设置唯一索引 1:多条字段为NULL的记录,可以正常插入数据库中 2:重复值插入会正常校验重复值 Tips:设置字符串null也是会校验重复值 测试3770条NULL值记录,一条有值的记录。单独查询这个...
  • 1、主键的创建方法一:直接在sql语句中声明字段主键约束create table table_name (id type[length]constraintpk_nameprimary key,name tyoe[length],age type[length],class_id);方法二:alter更改表添加约束alter ...
  • 索引都会包含rowid来定位到具体的位置,但是唯一索引不会用rowid来作为“索引键”的一部分比如在列col1上建立非唯一索引,则其索引键是col1| rowid,这样索引键就唯一了,但唯一索引不会在列上加上rowid构成索引键...
  • Oracle创建索引的基本规则

    千次阅读 2021-05-03 05:20:03
    选择索引字段的原则:在WHERE子句中最频繁使用的字段联接语句中的联接字段选择高选择的字段(如果很少的字段拥有相同值,即有很多独特值,则选择很好)Oracle在UNIQUE和主键字段上自动建立索引在选择很差的字段上...
  • Oracle多个字段联合索引保证唯一性

    千次阅读 2021-09-26 16:00:30
    今天在开发过程中遇到了需要两个字段联合保证唯一性,所以查阅了一些资料和博客,梳理一下以便之后用到!!! 首先,你要搞明白什么是唯一索引和唯一约束,其次它们之间的区别是什么? 前提 二者的定义 唯一...
  • 参照表上的内容建立2个唯一索引。 1、年字段做唯一索引,相当于主键id,不允许任何重复年份。 2、届次做复合索引,相同的届值只能对应不重复的次。比如可以是:十二届第一次、十二届第二次、十二届第三次,不能...
  • oracle创建索引

    千次阅读 2022-06-01 21:06:21
    数据库索引是为了提高查询速度的一种数据结构。
  • 主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录,在...oracle创建主键后会自动生成一个唯一索引,并且该唯一索引可以在user_indexes视图中查到。创建两张表结构相同的表,test_1...
  • Oracle唯一索引功能替代

    千次阅读 2021-05-03 10:08:10
    Oracle唯一索引在字段全部为NULL时,不做唯一性判断,允许重复插入,而在8t中即使均为NULL值也会做重复值判断,在某些场景下客户会存在此类需求,在数据量不大不存在性能问题的情况下可以考虑通过如下方式进行替代...
  • ORACLE创建索引思路

    2021-12-23 17:37:25
    ORACLE创建索引思路 何为索引 索引是一种数据结构,是为了更快速的访问到数据。 索引是各种关系数据库系统最常见的一种逻辑单元,是关系数据库系统举足轻重的重要组成部分,对于提高检索数据速度有着至关重要的作用...
  • oracle查询索引(oracle查看表索引)

    千次阅读 2021-04-30 10:02:20
    oracle查询索引(oracle查看表索引)2020-07-24 11:01:26共10个回答选中表右键View然后查看index通过PL/SQL可以直接查看某表是否建索引,通过SQL查询selectstatus,T.*fromuser_indexesTwheretable_name='表名'oracle...
  • 一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。...推荐阅读:接下来我们看看数据库中的主键约束、唯一键约束和唯一索引的区别。SQL> select * from v$version;BANNER----------------...
  • oracle唯一索引

    万次阅读 2018-01-03 11:38:43
    1 oracle支持唯一索引。可以理解为唯一约束。用来控制和约束需要插入的表中字段。(主键自动为唯一约束,且不为空   )。 2 唯一索引,可以理解为:唯一约束,用来控制表中字段的。例如表中有两个或多个字段...
  • oracle创建索引表空间

    2021-05-06 01:02:57
    (表空间下有数据时候用) temporary tablespace 是 oracle 里临时表空间,临时表空间主要用途是在数据 库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完 成之后系......sql创建索引 plsql创建...
  • Oracle分区索引

    千次阅读 2021-01-12 05:35:34
    分区索引分为两类:Locally partitioned index(局部分区索引)Globally partitioned index(全局分区索引)下面就来详细解析一下这两类索引。一:Locally partitioned index(局部分区索引)1.概念:局部分区索引随表对...
  • Oracle创建删除索引

    千次阅读 2019-05-06 10:27:44
    索引创建 create index index_name ontable(column_name1,...创建唯一索引 create index unique index_name ontable(column_name1,column_name2); 索引的删除。 drop index index_name; 以下两条语句是...
  • Oracle | PL/SQL唯一索引(Unique Constraint)使用方法1 目标用演示样例演示怎样创建、删除、禁用和使用唯一性约束。2 什么是唯一性约束?唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束。...
  • 一. 视图 1.1 什么是视图       视图是一种数据库对象,是从一个或者多个数据表或视图中导出...根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合, &n
  • 索引是我们经常使用的一种数据库搜索...其中,唯一性索引Unique Index是我们经常使用到的一种。 唯一性索引unique index和一般索引normal index最大的差异就是在索引列上增加了一层唯一约束。添加唯一性索引的数据列...
  • 索引介绍1.1索引创建语法:CREATEUNIUQE|BITMAPINDEX.ON.(|ASC|DESC,|ASC|DESC,...)TABLESPACESTORAGELOGGING|NOLOGGINGCOMPUTESTATISTICSNOCOMPRESS|COMPRESSNOSORT|REVERSEPARTITION|GLOBALPA...
  • 如果分别按纳税人识别号,税务机关代码,月份3个字段查询,每个字段在该表中的可选或约束都不强,如一个纳税人识别号有很多纳税记录,一个税务机关代码和同一月份记录就更多了,所以3个字段合起来,"某个纳税人识别号+...
  • Oracle主键、唯一键与唯一索引的区别一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整约束。索引和键...
  • Oracle 建立索引及SQL优化

    千次阅读 2021-05-01 10:14:40
    如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。建议原则:1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个...
  • 创建唯一性约束,自动创建了和约束名一样的唯一性索引创建check约束,不会产生索引创建外键约束,不会产生索引启用约束:enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束.enable novalidate :...
  • Oracle视图中建立索引注意事项.doc

    千次阅读 2021-05-01 01:00:01
    Oracle视图中建立索引的注意事项在视图上创建索引需要三个条件:一、视图必须绑定到架构。要做到这点,在?CREATE?VIEW?语句中,必须加上?WITH?SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,937
精华内容 29,574
热门标签
关键字:

oracle创建唯一性索引