不是的,主键是可以自己选择的,我们可以选择任意一种数据类型作为主键。
但是一般都是单独创建一个自增字段作为主键,主要能带来以下几个好处:
另外,即使我们用了自增字段作为主键,最后体现在数据库上,字段也可能不是连续自增的,比如做了某一次插入失败但是主键ID被占用了,比如数据做了删除,比如做了回滚、比如做了数据订正等等。
如果我们在一张表中没有定义主键,那么,MySQL会默认选择一个唯一的非空索引作为聚簇索引。
如果没有适合的非空唯一索引,则会创建一个隐藏的主键(row_id)作为聚簇索引。
这个隐藏的主键包含一个自增列和一个6字节的定长记录指针,对用户透明,即用户无法看到或修改这个列,但可以通过使用该列来进行排序或连接操作。