Primary Key & Index

主键,Primarykey。索引,Index。主键一般跟唯一键,相应。Primary Key跟Unique 相应。本质上没有什么意义。仅仅是一种约束。
可是在建立Primary key 跟Unique key时候都会建立相应的Index索引,才是有存在实质意义的。


 在某种程度上,主键=Unique+not null。主键相应主键索引,类似唯一键相应唯一索引。而主键跟唯一索引存在本质的不同。主键是一种约束,而唯一索引是一种索引。

另外较重要的差别。主键可以被其它表的当做外键关联起来。

而索引则不行。


  主键索引跟唯一索引。

主键索引其值唯一标识表中的每一行 。唯一索引。其索引的值不能存在同样值。主键索引是唯一索引的特定类型。该索引要求主键中的每一个值都唯一。

 
  相比之下。联合主键就跟联合唯一索引相应。类比于主键跟索引的差别。联合主键,由多column组成一个义主键将自己主动创建主键索引,
 主键,可以更加的避免数据的反复性。从而更加保障可以相应数据的唯一性,成为数据的唯一识别的标示。联合唯一索引,相应于唯一索引。


  建立索引的目的就是为了加快查找数据的速度。

可是会占用物理空间。同一时候减慢数据库的增删改的效率。
适合建立索引的情况:
1 常常须要搜索的列上,能够加快搜索的速度。2在常常常使用在连接的列上,这些列主要是一些外键,能够加快连接的速度 
Duplicate entry是一种Key的冲突。这个Key能够使主键,也能够是唯一键。由于主键跟唯一键都不能反复,一旦反复就会报这个冲突错误。 仅仅有这两种情况下,有主键或者唯一键-即联合主键或联合唯一索引,一旦数据反复,就会提示Duplicate entry这个错误。




    唯一索引
唯一索引不同意两行具有同样的索引值。
假设现有数据中存在反复的键值,则大多数数据库都不同意将新创建的唯一索引与表一起保存。

当新数据将使表中的键值反复时。数据库也拒绝接受此数据。

比如,假设在 employee 表中的职员姓氏(lname) 列上创建了唯一索引,则全部职员不能同姓。


主键索引
主键索引是唯一索引的特殊类型。


数据库表通常有一列或列组合。其值用来唯一标识表中的每一行。该列称为表的主键。


在数据库关系图中为表定义一个主键将自己主动创建主键索引,主键索引是唯一索引的特殊类型。

主键索引要求主键中的每一个值是唯一的。当在查询中使用主键索引时。它还同意高速訪问数据。


它们的一些比較:
(1)对于主健/unique constraint , oracle/sql server/mysql等都会自己主动建立唯一索引;
(2)主键不一定仅仅包括一个字段,所以假设你在主键的当中一个字段建唯一索引还是必要的。
(3)主健可作外健,唯一索引不可;
(4)主健不可为空,唯一索引可;
(5)主健也但是多个字段的组合;
(6)主键与唯一索引不同的是:
a.有not null属性;
b.每一个表仅仅能有一个。

posted on 2017-06-22 16:38  wgwyanfs  阅读(120)  评论(0编辑  收藏  举报

导航