PK,(主键)是表中不能为空,并却是不能重复的值。
UNIQUE 是唯一的键值!也是不重复的值。
主键,可以是一个或者多个字段的组合,它可以是UNIQUE,也可以不是。
UNIQUE,是一个字段,它可以做主键,也可以不是。
UNIQUE一般是用来约束整型数值的。

解决方案 »

  1.   

    是否可以为空的区别
    Primary key是主键,要求唯一性、不能为空,自动创建索引,
    Unique Constraint 要求不能重复,可以为空,自动创建索引。
      

  2.   

    Primary key是要求唯一性(Unique)的
      

  3.   

    "UNIQUE一般是用来约束整型数值的"
    这一句我有点质疑
    unique key 的目的就是为了该字段数据的唯一性
    与数据类型没有任何关系
    primary key的目的是为了保证一条纪录的唯一性
    可以多字段(或全字段)一起合成
    pk 是uk的特例
      

  4.   

    Primarykey 多个表字段构成一个Primary key,也就是一个表只能有一个Primary key而 unique key 一个表可有多个unique key
      

  5.   

    1.一个表最多只能有一个pk,但可以有多个uk;
    2.每个uk或者pk都可以由一到多个字段组成;组成pk的字段不能为空,但组成uk的字段可以为空;
    3.另外,在表中可以有多条组成uk字段全为空的记录存在.
      

  6.   

    另外,非常赞同greatplain所说的:pk是uk的特列.
      

  7.   

    pk不能 是NULL,而UK可以,一个表只能有一个PK,可以有多个UK!PK,UK都是CONSTRAINT的一种形式!!
      

  8.   

    除了大家所说的
    pk/uk 在oracle的优化器提供信息上有差异,而可能导致query  rewrite 等选择
    也就是说优化器的路径选择不一样
      

  9.   

    大家所说的已应非常全了,我无话可说,请 xindy 结贴吧。