📜  主键和唯一键的区别(1)

📅  最后修改于: 2023-12-03 15:21:38.403000             🧑  作者: Mango

主键和唯一键的区别

主键和唯一键都是用来保证数据表中数据的唯一性,但是它们之间还是有一些区别的。

主键

主键是用来唯一标识一条数据的,每张表只能有一个主键,一般是通过自增长的方式来实现主键的自动编号。主键具有以下特点:

  • 主键必须是唯一的,不能重复;
  • 主键不能为null,即不能为空值;
  • 主键一旦被确定,就不能再被修改。

在创建一张数据表时,我们需要给数据表一个主键,主键可以是一个普通的字段,也可以是一个多个字段组合而成的复合主键。比如,在一个用户表中,我们可以使用用户id作为主键。

CREATE TABLE `user` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `age` INT(11) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
唯一键

唯一键也是用来保证数据的唯一性,但是与主键不同的是,一张表可以有多个唯一键。唯一键具有以下特点:

  • 唯一键必须是唯一的,不能重复;
  • 唯一键可以为null,可以有多条记录是null值;
  • 唯一键可以被修改。

在创建数据表时,我们经常会创建一些与业务相关的唯一约束,比如在一个文章表中,我们可以使用文章标题作为唯一键。

CREATE TABLE `article` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(255) NOT NULL,
    `content` TEXT NOT NULL,
    UNIQUE KEY `unique_title` (`title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
区别

主键和唯一键的区别主要在于以下几点:

  • 主键必须是唯一的,且不能为空值,唯一键可以为空值;
  • 主键只能有一个,唯一键可以有多个;
  • 主键一旦被确定,就不能再被修改,唯一键可以被修改。

在实际开发过程中,我们需要根据不同的业务需求选择合适的主键或唯一键来保证数据的唯一性。例如,当我们需要对数据进行更新和删除操作时,我们需要使用主键进行操作。而当我们需要进行关联查询时,我们可以使用唯一键来进行关联。