`
huangyongxing310
  • 浏览: 496232 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

主键、唯一键、唯一索引区别

 
阅读更多
主键:
1.可以定义一列或多列为主键。不允许空(NULL),主健可作外健,唯一索引不可;
2.定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。


唯一键(唯一性约束):
1.唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,
指定列上都不允许有相同的值,允许空(NULL)
2.唯一约束可以用于保证在基表中增加一条记录时,一个或多个列值是唯一的。

唯一索引:可以定义一列或多列为唯一索引


索引:是为了方便查询数据快速定位


外键:增加子表记录时,是否有与之对应的父表记录,如果主表没有相关的记录,从表不能插入



1.主健、唯一键,都会自动建立唯一索引;
2.主健可作外健,唯一索引不可;
3.主健不可为空,唯一索引可;
4.在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引
5.约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。


唯一性约束与唯一索引有所不同:
1.创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。
2.创建唯一索引只会创建一个唯一索引,不会创建Constraint。
3.也就是说其实唯一约束是通过创建唯一索引来实现的。

删除时这两者也有一定的区别:
1.删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,
2.而删除了唯一索引的话就可以插入不唯一的值。


1.主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除;
2.主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空;
3.相同字段序列不允许重复创建索引;


1.索引键值不会存储空值,所以索引为空时不从索引取值
2.其实就是只索引非NULL值,唯一索引也一样,跳过NULL值不做索引
3.如果两个字段构成了一个唯一约束,其中一个字段为空,那么另一个字段的值不能出现重复。全部为NULL的情况,仍然和单字段唯一约束一样,不会造成重复,
4.唯一键是可有多行是NULL 值的
5.在mysql oracle的innodb引擎中,是允许在唯一索引的字段中出现多个null值的。

聚集索引:
由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。
但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

非聚集索引
数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。
索引中的项目按索引键值的顺序存储,而表中 的信息按另一种顺序存储(这可以由聚集索引规定)。


分享到:
评论

相关推荐

    goldengate同步无主键无唯一索引表的问题以及解决方案.docx

    GoldenGate 同步无主键无唯一索引表的问题及解决方案 在数据同步中,无主键无唯一索引表的同步问题是常见的困扰, GoldenGate 作为一款优秀的数据同步工具,也遇到了这个问题。因此,本文将讨论 GoldenGate 同步无...

    主键索引与唯一索引的区别

    1、 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 2、 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 3、 唯一性索引列允许空值,而主键列不允许为空值。 4、 主键列在创建时...

    MySQL 主键与索引的联系与区别分析

    下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一...

    OracleGoldenGate针对表没有主键或唯一索引的解决方案[归类].pdf

    Oracle GoldenGate 针对表没有主键或唯一索引的解决方案 Oracle GoldenGate 是一种 数据复制和集成工具,用于在不同的数据库管理系统之间复制和集成数据。然而,在使用 Oracle GoldenGate 复制事务数据时,如果表...

    简单例子理解主键,索引,聚集索引,复合索引,非聚合索引

    一、 创建主键(主键=主键索引=聚集索引) 主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex...

    mysql主键和唯一索引的区别(csdn)————程序.pdf

    即使一个列上有唯一索引,如果不指定为主键,那么它就不是主键,不具有主键的全部约束特性。唯一索引可以用于实现部分数据完整性,但并不像主键那样有强制的非空属性。 在数据库设计中,主键常被用作外键,以建立表...

    LNH_MySQL 18-主键-唯一-普通索引创建及删除小结.mp4

    LNH_MySQL 18-主键-唯一-普通索引创建及删除小结.mp4

    Mysql主键和唯一键的区别点总结

    唯一键同样不允许重复的值,但它的主要区别在于可以用来约束非主键的列。在上述的学生表例子中,`Citizen_ID`可以设置为唯一键,确保每个学生的公民ID都是独一无二的,即使某个学生没有公民ID,该列可以接受一个NULL...

    MySQL索引之主键索引

    在MyISAM引擎中,唯一索引和主键索引的区别不大,除非唯一索引包含NULL值。而在InnoDB中,主键作为聚集索引,而其他唯一索引和辅助索引仅作为非聚集索引。这导致了查询性能上的差异,辅助索引查询可能需要额外的步骤...

    MySQL的主键与唯一索引约束

    MySQL中的主键与唯一索引约束是数据库设计中至关重要的概念,它们确保数据的唯一性和完整性。主键是一种特殊的唯一索引,它定义了一个表的唯一标识,不允许有重复值且不能为空。唯一索引则允许有空值,但索引中的每...

    键、索引、约束及其区别

    外键是一个表中的列或列组合,它的值来自于另一个表的主键或其他唯一索引。外键用于建立两个表之间的关系,实现数据的参照完整性。 **2.3 唯一键 (Unique Key)** 唯一键与主键类似,但不同之处在于一个表中可以有...

    oracle创建表创建唯一索引

    以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束。 首先,我们来理解"创建学员信息表"。在Oracle中,我们可以使用`CREATE TABLE`语句来创建新的表。一个典型的学员信息表可能...

    超键 候选键 主键的简单介绍

    3. **主键(Primary Key)**:在数据库设计中,主键是一个特定的候选键,用于唯一标识一个表中的每一条记录。主键是在创建表时指定的一个候选键,用作实体完整性的主要保障手段。主键具有两个重要特性:唯一性和非空...

    如何在oracle中查询所有用户表的表名、主键名称、索引、外键等

    根据提供的标题、描述以及部分代码内容,我们可以了解到这篇文章主要探讨的是如何在Oracle数据库中查询所有用户表的相关信息,包括表名、主键名称、索引、外键等元数据信息。接下来,我们将对这些知识点进行详细的...

    行业-67 基于主键的索引是如何设计的,以及如何根据主键索引查询?l.rar

    2. 唯一性:主键索引保证了索引项的唯一性,因此在B+树的每个节点中,键值都是唯一的。对于复合主键,所有字段组合的值必须全局唯一。 3. 非叶节点存储键值:B+树的非叶子节点只存储键值,不存储数据,这样可以减少...

    数据库,索引,主键,约束,sql

    在数据库中,索引、主键和约束是至关重要的概念,而SQL(Structured Query Language)则是与数据库交互的语言。 首先,索引是提高数据库查询速度的关键工具。它们类似于书籍的目录,使得数据库能够快速定位到特定的...

    主键、外键、唯一、约束区别

    3) **索引类型**:唯一性约束默认创建非聚集索引,而主键创建的通常是聚集索引,这影响了数据在磁盘上的存储方式。 最后,**约束(Constraint)**是对表中数据的一种限制,它确保了数据的完整性。约束可以是主键、...

    oracle表主键和外键的区别

    **唯一键**与主键相似,也是保证数据唯一性的约束,但有以下不同: 1. 允许空值:唯一键允许包含空值,而主键不允许。 2. 不是主键:一个表可以有多个唯一键,但只有一个主键。 **左联接**和**右联接**是SQL中的两...

    删除数据库的所有表、存储过程、主键、外键、索引等

    这个过程通常涉及删除数据库中的所有表、存储过程、主键、外键以及索引等对象。下面我们将详细探讨这些概念及其在数据库中的作用,以及如何安全有效地执行删除操作。 首先,让我们逐一了解这些数据库元素: 1. 表...

Global site tag (gtag.js) - Google Analytics