一、主键的概念
表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号。
主键(primary key) 一列(或一组列)能够唯一区分表中的每一行。
二、主键是必须的吗
不是必须的,但是最好每个表有一个主键,以便于以后数据操纵和管理。
【原因】:
- 加主键的目的,是为了保证数据完整性和唯一性。如果你这个表有相应的外键表,那外键列值必须等于主键值,这是最基本的一对多关系。
- 设置了主键后一般会创建聚集索引,可以提高查询效率,但这不是主键的基本目的,不用主键,同样可以创建聚集索引,而且主键,也不一定非得创建聚集索引。
三、主键设置规范
- 任何两行都不具有相同的主键值。
- 每个行都必须具有一个主键值(主键列不允许NULL值)。
- 不更新主键列的值。
- 不重用主键列的值。
在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。