天天看点

MySQL的各种键都废了吗?(上)

主键(primary key)

一列 (或一组列),其值能够唯一区分表中的每个行。唯一标识表中每行的这个列(或这组列)称为主键。主键用来表示一个特定的行。没有主键,更新或删除表中特定行很困难,因为没有安全方法保证只涉及相关的行而不误伤其他行!

一个顾客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用雇员ID或雇员社会保险号。

应该总是定义主键 虽然并非总需主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便以后的数据操纵和管理。

表中的任何列都可以作为主键,只要它满足以下主键值规则条件:

任两行不具相同的主键值

每行都必须具有一个主键值(主键列不允许NULL)

这里的规则是MySQL本身强制实施的。

除MySQL强制实施的规则外,还应该坚持的最佳实践:

不更新主键列中的值

不重用主键列的值

不在主键列中使用可能会更改的值

例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其

名字时,必须更改这个主键)

联合主键

好处

可以直观的看到某个重复字段的记录条数

主键A跟主键B组成联合主键

主键A跟主键B的数据可以完全相同,联合就在于主键A跟主键B形成的联合主键是唯一的。

联合主键体现在多个表上,复合主键体现在一个表中的多个字段。