主键与唯一性索引

primary key & unique     
其实指定列的索引就相当于对指定的列进行排序,为什么要排序呢?因为排序有利于对该列的查询,可以大大增加查询效率。(那么可能有人认为应该对所有的列排序,这样就可以增加整个数据库的查询效率?这样的想法是错误的,原因是建立索引也是要消耗系统资源的,给每个表里的每个列都建立索引那么将对系统造成极大的负担,那就更别提效率了!)---------简单的说建立一个列的索引,就相当与建立一个列的排序。
主键其实就是一个索引,但是这个索引跟一般的索引有所不同,不同在于主键所在的列里的每一个的记录都是唯一的,也可以说不能在主键里出现相同的记录,在同一个表里只能有一个主键。(主键等于索引,索引不一定等于主键)----------简单的说主键就是所在列不能出现相同记录的特殊索引,而且这个索引只能在表里出现一次。


1.主键一定是唯一性索引,唯一性索引并不一定就是主键; 
2.一个表中可以有多个唯一性索引,但只能有一个主键; 
3.主键列不允许空值,而唯一性索引列允许空值。

 
主键在表中有唯一标识的作用,不可重复,不能为空; 
当其它表建立外键关联当前表时,只可以关联主键。  
唯一索引,确切的说是唯一约束,   

create unique index index_id on(id);
是用来限制当前表插入时建立唯一约束的字段不可重复。 
一个是做为唯一标识,先唯一后标识;   另一个是插入时做唯一限制。    
原文地址:https://www.cnblogs.com/helife/p/1921684.html