📜  MySQL主键(1)

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

MySQL主键

简介

在 MySQL 数据库中,主键用于标识表中的唯一记录。主键可以是单个列或多个列的组合。主键通常在创建表时定义,并且它们可以用于确保表中数据的完整性。

主要特点
  • 主键必须唯一,它们可以用于确保表中数据的唯一性。
  • 主键不允许 null 值,因为它们必须唯一。
  • 主键可以是单个列或多个列的组合,这意味着可以使用多个列来定义主键。
  • 所有主键列都必须是同一数据类型。
  • 主键列必须定义为 NOT NULL。
  • 如果主键是多列的组合,则每列都不能为 NULL。
  • 主键列上通常会自动创建索引,这提高了数据查询的速度。
创建主键

在创建表时,可以使用 PRIMARY KEY 关键字来定义主键。主键可以是单个列或多个列的组合。例如:

CREATE TABLE my_table (
  id INT NOT NULL PRIMARY KEY,
  first_name VARCHAR(255),
  last_name VARCHAR(255)
);

在这个例子中,创建一个名为 my_table 的表,其中 id 列是主键。注意到这里 id 列没有空值(因为这是主键),而 first_namelast_name 列可以有空值。

如果想要使用多个列来定义主键,则可以采用以下语法:

CREATE TABLE my_table (
  id INT NOT NULL,
  department_id INT NOT NULL,
  first_name VARCHAR(255),
  last_name VARCHAR(255),
  PRIMARY KEY (id, department_id)
);

在这个例子中,创建一个名为 my_table 的表,其中 iddepartment_id 组成了主键。这两列都没有空值,而 first_namelast_name 列可以有空值。

更改主键

如果需要更改表中的主键列,可以使用 ALTER TABLE 语句。例如,如果想要将 my_table 表中的主键从 id 列更改为 department_id 列,可以使用以下语句:

ALTER TABLE my_table DROP PRIMARY KEY,
                 ADD PRIMARY KEY (department_id);

在这个例子中,使用 ALTER TABLE 语句删除了原始的主键(id 列),同时添加了一个新的主键(department_id 列)。

注意事项
  • 将表的主键更改为其他列可能会带来意想不到的后果,因为主键通常用于其他数据表之间的引用。因此,必须小心使用 ALTER TABLE 命令更改主键。
  • 由于主键是用于确保表中数据的唯一性,因此对于大型表,它们可能会成为查询性能瓶颈。因此,在选择主键时,应该考虑它的大小、分布以及经常用于查询的方式。