zjcxc(邹建) 等高手的到来,让我感到很荣幸,我现在很想了解一下主键和唯一索引到底是怎么回事。有什么书可以参考,大家给个建议,我不是计算机专业出来的,基础不扎实。希望大家不要见笑。

解决方案 »

  1.   

    PRIMARY KEY 约束
    表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。当为表指定 PRIMARY KEY 约束时,Microsoft® SQL Server™ 2000 通过为主键列创建唯一索引强制数据的唯一性。当在查询中使用主键时,该索引还可用来对数据进行快速访问。如果 PRIMARY KEY 约束定义在不止一列上,则一列中的值可以重复,但 PRIMARY KEY 约束定义中的所有列的组合的值必须唯一。如下图所示,titleauthor 表中的 au_id 和 title_id 列组成该表的组合 PRIMARY KEY 约束,以确保 au_id 和 title_id 的组合唯一。当进行联接时,PRIMARY KEY 约束将一个表与另一个表相联。例如,若要确定作者与书名的对应关系,可以使用 authors 表、titles 表和 titleauthor 表的三向联接。因为 titleauthor 包含 au_id 和 title_id 两列,对 titles 表的访问可由 titleauthor 和 titles 之间的关联进行。
      

  2.   

    主键约束
    主键约束确保在特定的列中不会输入重复的值,并且在这些列中也不允许输入 NULL 值。可以使用主键约束强制唯一性和引用完整性。唯一索引
    唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的。注意事项
    只有当唯一性是数据本身的特征时,指定唯一索引才有意义。如果必须实施唯一性以确保数据的完整性,则应在列上创建 UNIQUE 或 PRIMARY KEY 约束,而不要创建唯一索引。说明  创建 PRIMARY KEY 或 UNIQUE 约束会在表中指定的列上自动创建唯一索引。
    在同一个列组合上创建唯一索引而不是非唯一索引可为查询优化器提供附加信息;所以最好创建唯一索引。以上都是从联机帮助摘的,以下是个人理解:
    1、主键和唯一索引的共同点都有约束作用,保证唯一性和完整性;都是索引,可以是聚集索引也可以是非聚集索引。
    2、不同点是主键不允许NULL,唯一索引可以NULL;一个表主键只能一个,唯一索引可以多个;速度上唯一索引不如主键
    3、除非业务要求,一般的表应该有主键