📅  最后修改于: 2023-12-03 15:35:07.971000             🧑  作者: Mango
在关系型数据库中,每张表都要有一个或多个用来标识、区分各个数据行的列。主键和唯一键都是用来定义这样的列的。
主键是用来唯一标识每一行数据的列或列集合。在一张表中,每一行数据的主键值都是唯一的,且不能为空。主键可以由单列或多列组成。
在创建表时,可以使用 PRIMARY KEY
关键字来指定主键:
CREATE TABLE myTable
(
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
上述 SQL 语句创建了一张名为 myTable
的表,其中的 id
列被指定为主键。
如果需要同时指定多个列为主键,可以在 PRIMARY KEY
后面列出多个列名,用逗号隔开:
CREATE TABLE myTable
(
id INT,
name VARCHAR(50),
age INT,
PRIMARY KEY (id, name)
);
上述 SQL 语句创建了一张名为 myTable
的表,其中的 id
和 name
列共同组成了主键。
主键有以下作用:
选择主键时应当遵循以下规则:
唯一键是一列或列集合,其值在表中唯一,但是可以为 NULL。与主键不同的是,一张表可以有多个唯一键。
在创建表时,可以使用 UNIQUE
关键字来指定唯一键:
CREATE TABLE myTable
(
id INT,
name VARCHAR(50) UNIQUE,
age INT
);
上述 SQL 语句创建了一张名为 myTable
的表,其中的 name
列被指定为唯一键。
唯一键的作用与主键相似,但是唯一键允许有多个 NULL 值。
选择主键还是唯一键应当根据具体情况来确定。在下面的情况中,主键是更好的选择:
在下面的情况中,唯一键是更好的选择:
最后,需要注意的是,在实际的开发中,应当尽量避免对主键或唯一键使用系统自带的自增长机制,而是应当使用业务上的实际标识符作为主键或唯一键。