主键要保证唯一性
主键是表中的一个列,可以区分表中的各行都是唯一的数据行。尽管普通的列也可以设计为是唯一的,但与这些列不同,只有一个列可以作为主键。这就提供了一个显而易见的选择:在需要明确指定特定行的查询中,可以充分利用主键列。
主键是表中保证各行唯一的一个列,为了确保主键的这种唯一性,MySQL对声明为PRIMARY KEY的列做出了一些限制。可以把这些限制认为是使用主键时必须遵循的原则。主键中的数据不能重复,两个数据行的主键绝对不能有相同的数据,对此绝无例外,给定表中主键总有唯一的值。主键必须有一个值,如果一个主键为空,那么它可能并不唯一,因为其他行的主键也可能为空,一定要将主键设置唯一的值。
在输入新行时必须设置主键,如果可以插入一行而没有主键,就会存在风险,最终有可能出现NULL主键,而且表中有可能出现重复的行,这就会破坏我们的目标。主键必须尽可能高效,主键应当只包含保证唯一性所需的信息而不含其它多余的内容。正是因为这个原因,整数很适合用作为主键,它们支持唯一性而不需要太多的存储空间。主键值不能改变,如果可以改变主键值,就有可能不小心将它设置为一个已经使用的值。要记住,要尽一切可能保证唯一。