精华内容
下载资源
问答
  • 创建unique时,约束和索引有何区别 唯一约束和唯一索引区别,选项 忽略重复键 作用
                   

    以下转自:http://bbs.csdn.net/topics/190120355

    创建唯一索引保证了往表中插入重复索引列值的操作都会失败。如果一个单独的sql语句试图往表中插入包含重复索引列值的数据行,sql server将不会插入以上所有行。例如,当一个insert操作试图把从表A中取出的20行插入到表B,而其中的10行跟索引列值重复的话,默认情况下以上20行都不会被插入。然而,如果把索引对应的 “忽略重复键”开关打开的话,包含重复数值的行不会被插入,而非重复数值行会被插入。也就是说,其中的10行会被插入。


    约束则没有这一开关,因此定义了一个约束之后,只要有与定义列重复值的行,插入都将被拒绝。

    我的个人看法是,索引和约束本质上是相同的,可能区别也就在于此。  



    以下转自:http://bbs.csdn.net/topics/90010747

    unique约束与unique索引后者包含了前者,且有索引的作用.
    如果某列有多行包含 NULL 值,则不能在该列上创建unique索引 

    因为unique约束也是通过unique索引实现的.
    ============================================================

    唯一的区别在于建立和删除上.
    索引是使用 create/drop index 创建和删除的
    而约束是使用 alter table tb add constraint 建立, 使用 drop constraint 删除  

    ============================================================

    忽略重复值这个选项设置上后, 如果你插入的数据的值与现有值重复, 则插入不会失败, 而是自动跳过重复的这条记录的插入.

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 约束和索引区别

    2020-02-24 14:49:43
    约束和索引区别 Constraint 约束被 DB2 Universal Database(DB2 UDB) 用来对数据业务规则数据完整性进行实施、维护。约束的作用范围仅限在当前数据库,通过检索‘数据库目录’‘命令方式’(select * from ...

    约束和索引的区别

    Constraint

    约束被 DB2 Universal Database(DB2 UDB) 用来对数据业务规则和数据完整性进行实施、维护。约束的作用范围仅限在当前数据库,通过检索‘数据库目录’和‘命令方式’(select * from user_constraints)可以查看到约束信息。如果想方便、快捷的访问约束信息,Control Center也是种方式。约束可以被当做数据库对象来处理,它们具有名称和关联模式(creator ID)。

    约束的五种类型:
    一、主键约束(primary key constraint)
    主键创建时默认会自生成约束,也可通过显示声明。
    alter table stuInfo add constraint PK_stuNo primary key (stuNo)
    /* 主键可以是一列或多列的组合用以唯一标识表中某行数据。*/

    二、外键约束(foreign key constraint)
    外键创建时默认会自生成约束,也可通过显示声明。
    alter table stuMarks add constraint FK_stuNo foreign key(stuNo) references stuinfo(stuNo)
    /* 主表stuInfo 从表stuMarks */

    三、检查约束(check constraint)
    alter table stuInfo add constraint CK_stuAge check (stuAge between 15 and 40)
    /* 年龄限制在15-40岁之间 */

    四、唯一约束(unique constraint)
    alter table stuInfo add constraint UQ_stuID unique(stuID)
    /* 身份证号唯一 */

    五、默认约束(default constraint)
    alter table stuInfo add constraint DF_stuAddress default (‘地址不详’) for stuAddress
    /* 地址信息不填,默认为地址信息不详 */

    六、信息约束(informational constraint)
    /* 不是由DB2管理器来负责实施SQL 编译器可用它来提高查询性能 */

    Index
    索引是一个单独和物理地并存储在数据页上的数据库结构,它是表中一列或若干列值的集合和相应的指向表中数据值的物理标识数据页的逻辑指针清单。索引的存在会增加数据库的存储空间,也会使插入、修改数据的时间开销变多(因为索引也要随之变动)。注:索引可常驻内存进行处理

    在这些列上创建索引:
    在经常需要搜索的列上,可以加快搜索速度;在主键列上,强制该列的唯一性和组织表中数据的排列结构;在经常用在连接的列上,这些列主要是一些外键,可以加快连接速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序;在经常使用where子句中的列上面创建索引,加快条件的判断速度。

    不应该创建索引的列:
    对于在查询中很少使用和参考的列不应该创建索引。增加索引会降低系统的维护速度和增大空间需求;对于数据值很少的列也不应增加索引。由于这些列的取值很少,例如:人事表的性别列,在查询结果中,结果集的数据行占了表中数据行的很大比例,在表中搜索的数据行的比例很大,索引不能明显加快检索速度;对于定义为text, image和bit数据类型的列不应该增加索引。因为这些列的数据量要么相当大,要么很少;当修改性能远远大于检索性能时,不应该创建索引。修改性能和检索性能是互相矛盾 的。索引会提高检索性能,但是会降低修改性能。

    索引的分类–按结构分
    索引按照结构可以分为有序索引(ordered index)和散列索引(hash index)两种基本类型。其中有序索引是基于值的顺序排序,根据值的排序进行索引值的查找。而散列索引则是基于将值平均分布到若干散列桶(hash bucket)。根据散列函数确定索引值所在的散列桶。
    一、有序索引:稠密索引、稀疏索引、多级索引和B+树索引。
    二、散列索引:静态散列、散列桶、散列函数、桶溢出和动态散。

    索引的分类–按功能分
    一、唯一索引(unique index)和非唯一索引(nonunique index)
    create unique index indexname on table tabname(colname)
    /* 允许值为空,但不允许存在的值重复 */

    二、主键索引(primary index)
    /* 唯一索引+非空约束=主索引,主键创建时会默认自生成索引 */

    三、集群索引(clustered index)和非集群索引(nonclustered index)
    create index indexname on table tabname(colname desc) cluster
    /* desc降序排列,在没有注明情况下默认是按asc升序排列 */

    集群索引是按物理结构排序的,它会对表中的数据进行重新排序,所以表中只能有一个该索引。数据库管理器会尝试按照相应键在索引页面中的顺序来保存数据到页面中。如果对表进行了重组,那么会按照索引键的顺序将数据插入数据页面中,数据库管理器不会维护数据的任何顺序。

    集群索引具有查询优势和插入上的疲软。由于需要保持索引值和数据行的物理顺序一致,插入数据时会进行大量迁移,为防止此种情况出现,我们允许聚簇索引存在无序状态,当聚簇率低于85%时就得进行重组。

    DB2集群索引的叶结点和非集群索引一样,都是指向相应数据页的逻辑指针。即索引数据页和常规数据页是严格分开的。但是包括Oracle,SQL Server在内的大部分数据库的聚簇索引的页结点不是指向数据页的指针,而是叶结点本身就是数据页。

    展开全文
  • 约束和索引的联系与区别

    千次阅读 2019-04-18 14:14:07
    约束和索引都可以用来提高查询的性能,维护数据元素之间的关系。 唯一所以、主键、唯一约束之间到底有什么不同呢? 1、从数据库逻辑设计的观点来看,每一种都表示不同的功能; 2、尽管他们都是通过索引来实现的,...

    约束和索引都可以用来提高查询的性能,维护数据元素之间的关系。

    唯一所以、主键、唯一约束之间到底有什么不同呢?

    1、从数据库逻辑设计的观点来看,每一种都表示不同的功能;

    2、尽管他们都是通过索引来实现的,但是IDS在管理上是有差别的。

    详细区别如下:

    1、约束用来在表中强制某些业务规则,可以分为两大类。第一类用约束来强制行的唯一性;第二类约束通常叫做检查约束,用来指定某个列的数值范围。

           这种约束不通过索引来实现,他们是通过向引擎中嵌入某些规则来实现的。

    2、键(包括主键和外键),是另外一种类型的约束,用来定义表之间的参照完整性或数据联系,通常被称作父子表联系。比如

    on delete cascade

    3、唯一索引是一种实体,应当只用来提高查询的性能。

    生效规则:

    1、约束是在事务结束的时候执行;

    2、索引是立即执行,而不管事务状态或引擎的日志模式。

    在使用约束的时候,不要删除约束创建的索引。不要试图通过sysconstraints表的数据行来删除约束,一定要通过alter语句来实现。

     

    索引可以转变成约束,但是反过来不可以。你可以在一个表上先创建唯一索引,然后再创建约束,反过来却不可以。

    在上面的方法创建的约束中,应该先删除约束,然后再删除索引。

     

    展开全文
  • 约束和索引

    2014-11-18 16:49:38
    1.主键约束(PRIMARY KEY) ...4) 主健可作外健,唯一索引不可; 2.唯一性约束(UNIQUE) 1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表
    1.主键约束(PRIMARY KEY)

    1) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。 
    2) 是不可能(或很难)更新. 
    3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
    4) 主健可作外健,唯一索引不可;

    2.唯一性约束(UNIQUE)
    1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
    2) 只要唯一就可以更新. 
    3) 即表中任意两行在  指定列上都不允许有相同的值, 允许空(NULL).
    4) 一个表上可以放置多个唯一性约束

    3.唯一索引(INDEX)

       创建唯一索引可以确保任何生成重复键值的尝试都会失败。

       唯一性约束和主键约束的区别:
        (1).唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,不但不允许有重复,而且也不允许有空值。
        (2).在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在 默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引

     

       约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。
       唯一性约束与唯一索引有所不同:

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

       (2).创建唯一索引只会创建一个唯一索引,不会创建Constraint。

       也就是说其实唯一约束是通过创建唯一索引来实现的。

       在删除时这两者也有一定的区别:

       删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,

       而删除了唯一索引的话就可以插入不唯一的值。
    展开全文
  • 唯一约束和唯一索引区别

    千次阅读 2017-09-21 21:02:55
    3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).4) 主健可作外健,唯一索引不可; 2.唯一性约束(UNIQUE) 1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问...
  • Oracle数据库唯一索引区别是本文我们主要介绍的内容,在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key、Check、UniqueForeign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里...
  • mysql中的约束和索引

    千次阅读 2019-05-14 19:54:48
    文章目录一、约束(Constraint)1、主键约束(primary key)2、唯一性约束(unique)3、默认值约束(default)4、外键约束(foreign key)二、索引(index)索引类型三、区别与联系 本文内容仅在 MariaDB-10.2.15 ...
  • 创建唯一索引保证了往表中插入重复索引列值的操作都会失败。如果一个单独的sql语句试图往表中插入包含重复索引列值的数据行,sql server将不会插入以上所有行。例如,当一个insert操作试图把从表A中取出的20行插入...
  • 主键、约束和索引

    2019-09-28 12:12:17
    1、主键约束不允许出现 NULL 值。任何索引条目的索引键都不允许包含NULL。唯一约束允许包含 NULL 值,但唯一约束把两个 NULL 值当作重复值,所以施加了... 3、创建唯一约束时会自动创建非聚集索引,除非你指定了 C...
  • SQL的约束和索引

    2018-06-14 00:56:01
    约束: 作用是为了保证数据的完整性,一致性,有效性. 约束分类: 1....缺点:当对表中的数据进行增加,删除修改的生活,索引也到动态维护,降低了数据的维护速度。索引需要占用物理空间 普...
  • 主键约束和唯一约束都会创建唯一索引,不同之处在于主键约束索引键在定义上不允许为NULL,而唯一约束索引键在定义上允许为NULL;唯一约束认为索引键上的NULL值是相等的,不允许重复的NULL值出现在索引键或其组合...
  • oracle约束和索引笔记

    2012-03-23 20:06:56
    自己看视频做的笔记,以后再更新,虽然内容很少,但是一看就懂。我也是菜鸟,所以笔记都是菜鸟笔记
  • Oracle的约束和索引

    2012-12-16 15:59:12
    约束 -------------------------------------------------------- 约束包括:  not null、unique、primary key、foreign key、check  not null(非空)  如果在列上定义了 not null ,那么当插入数据时,必须...
  • MySQL的约束和索引

    2017-02-16 20:10:59
    一、约束: 1.非空约束 not null; 2.唯一约束 unique(); uk unique约束的字段,要求必须是唯一的,但null除外。 3.主键约束 primary key (); pk 主键约束=not null+unique 4.外键约束:foreign ...
  • SQL 2005中约束和索引的作用与联系.pdf
  • 第五章、约束和索引

    2019-08-01 10:34:15
    文章目录5.1 关系型数据库设计规则5.2 约束索引的概念1、查看某个表的约束2、查看某个表的索引3、主键约束:primary key4、自增约束:auto_increment5、外键约束:foreign key6、唯一键约束:unique key7、非空...
  • 表的约束* primary key 主键约束 * 单字段主键 :字段名 数据类型 primary key; * eg: id int primary key; * 多字段主键 : primary key(字段名1,字段名2); * eg: primary key(id,name); * foreign ...
  • oracle主键约束、唯一键约束和唯一索引区别 (1)主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除; (2)主键约束要求列值非空,...
  • 谈谈唯一约束和唯一索引

    万次阅读 多人点赞 2018-03-27 21:20:00
    最近在看数据库相关知识,感觉唯一约束和唯一索引好像有点类似,于是研究了一番,于是就有了这篇文章。 概念 开始之前,先解释一下约束和索引约束 全称完整性约束,它是关系数据库中的对象,用来存放插入到...
  • 唯一约束和唯一索引

    2020-08-04 15:39:13
    MYSQL中唯一约束和唯一索引区别 1、唯一约束和唯一索引,都可以实现列数据的唯一,列值可以有null。 2、创建唯一约束,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引。唯一约束是...
  • oracle的约束隐式创建索引和索引约束区别 两种情况:1.对于创建约束时隐式创建的索引,在做删除操作的时候: 9i~11g都会连带删除该索引 2.对于先创建索引,再创建约束(使用到此索引)这种情况:9i版本:需要...
  • 1、唯一约束和唯一索引,都可以实现列数据的唯一,列值可以有null。 2、创建唯一约束,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引。唯一约束是通过唯一索引来实现数据的唯一。 3、...
  • 约束类型 MySQL SQL Server Oracle 主键约束 生成唯一索引 生成唯一索引 使用存在的索引或者生成唯一索引 外键约束 生成索引 不生成索引 不生成索引 唯一约束 生成唯一索引 生成唯一索引 使用已存在的...
  • 查看数据库中已有触发器、约束和索引并获得相应脚本
  • oracle 唯一约束 唯一索引

    千次阅读 2016-07-18 11:43:21
    唯一约束 唯一索引

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,216
精华内容 71,686
关键字:

约束和索引的区别