麻烦高手说一下primary key 与 unique key的区别。
另外,不同数据库之间(ms-sql server/mysql/oracle),它们的区别是否相同呢?

解决方案 »

  1.   

    其他数据库我不清楚。主键一定是 unique key,但是 unique key不一定是主键,因为不保证能唯一标识一行数据。另外在SQLServer里面主键默认是聚集索引。但是 unique key就没这个规定。通俗来说:
    主键:为了唯一标识一行数据。
    唯一键:保证列里面没有重复数据。
      

  2.   

    主键一定是 unique key,但是 unique key不一定是主键。主键不允许空。
      

  3.   

    也即是primary key 一定是 unique key?
      

  4.   

    这个说得比较通俗易懂。但是,既然unique key 是不重复的,为什么不能保证唯一标识?因为它有可能为空?
      

  5.   

    唯一,只保证这一列唯一,下面是联机丛书的解释:可以使用 UNIQUE 约束确保在非主键列中不输入重复的值。尽管 UNIQUE 约束和 PRIMARY KEY 约束都强制唯一性,但想要强制一列或多列组合(不是主键)的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束。可以对一个表定义多个 UNIQUE 约束,但只能定义一个 PRIMARY KEY 约束。而且,UNIQUE 约束允许 NULL 值,这一点与 PRIMARY KEY 约束不同。不过,当与参与 UNIQUE 约束的任何值一起使用时,每列只允许一个空值。FOREIGN KEY 约束可以引用 UNIQUE 约束。
      

  6.   

    高手,我发了另一个帖,麻烦帮看一下能不能通俗的回答http://bbs.csdn.net/topics/390280644