MySQL 必知必会 (7):了解 SQL 1.1.5

阅读数:25 2019 年 10 月 23 日 05:12

MySQL必知必会(7):了解 SQL 1.1.5

(数据库基础:主键)

表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客表可以使用顾客编号列,而订单表可以使用订单 ID,雇员表可以使用雇员 ID 或雇员社会保险号。

主键(primarykey)① 一列(或一组列),其值能够唯一区分表中每个行。

①全国科学技术名词审定委员会审定的 key 在数据库中的对应名词为“键码”或“码”,本书采用了已约定俗成的“键”,请读者注意。——编者注

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

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

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

  • 任意两行都不具有相同的主键值;
  • 每个行都必须具有一个主键值(主键列不允许 NULL 值)。

主键值规则 这里列出的规则是 MySQL 本身强制实施的。

主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。在使用多列作为主键时,上述条件必须应用到构成主键的所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。

主键的最好习惯 除 MySQL 强制实施的规则外,应该坚持的几个普遍认可的最好习惯为:

  • 不更新主键列中的值;
  • 不重用主键列的值;
  • 不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

还有一种非常重要的键,称为外键,我们将在第 15 章中介绍。

评论

发布