请问InnoDB 主键如何设置呢?[阿里云数据库MySQL版]

请问InnoDB 主键如何设置呢?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
5 条回复 A 作者 M 管理员
  1. 在 InnoDB 存储引擎中,可以通过以下方式来设置主键:

    在创建表时,使用 PRIMARY KEY 关键字指定主键。例如: CREATE TABLE table_name ( id INT NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL ); 在创建表后,使用 ALTER TABLE 语句来添加主键。例如: ALTER TABLE table_name ADD PRIMARY KEY (id); 需要注意的是,每个 InnoDB 表只能有一个主键,并且主键必须包含一个或多个 NOT NULL 列,以确保每行数据都有一个唯一标识。

  2. 在InnoDB中,主键是用于唯一标识表中每个行的一列或多列。可以使用以下两种方式来设置InnoDB主键:

    1、通过CREATE TABLE语句设置主键:

    可以在CREATE TABLE语句中使用PRIMARY KEY关键字指定一个或多个列作为主键,例如:

    CREATE TABLE my_table (  id INT PRIMARY KEY,  name VARCHAR(50),  age INT);

    上面的示例中,我们将“id”列指定为主键。如果要指定多个列,则可以使用逗号分隔列名,例如:

    CREATE TABLE my_table (  id INT,  name VARCHAR(50),  age INT,  PRIMARY KEY (id, name));

    上面的示例中,我们将“id”和“name”列组合起来作为主键。

    2、通过ALTER TABLE语句添加主键:

    可以使用ALTER TABLE语句来添加主键。例如,假设我们已经有一个名为“my_table”的表,并且希望将“id”列设置为主键,可以执行以下命令:

    ALTER TABLE my_tableADD PRIMARY KEY (id);

    上面的示例中,我们使用ALTER TABLE语句将“id”列添加为主键。

    无论使用哪种方式,一旦指定了主键,就不能再将其更改或删除。主键在表中必须是唯一的,也就是说,每个行必须具有唯一的主键值。

    • 在创建表时定义主键:在创建表的时候,可以通过在列定义中使用 PRIMARY KEY 约束来定义主键,例如:

    CREATE TABLE table_name (    id INT PRIMARY KEY,    column1 datatype1,    column2 datatype2,    ...);

    • 在已有表中添加主键:可以通过 ALTER TABLE 语句在已有表中添加主键,例如:

    ALTER TABLE table_name ADD PRIMARY KEY (id);

    • 使用自增长列作为主键:可以在定义主键的同时,使用 AUTO_INCREMENT 约束来使该列自增长,例如:

    CREATE TABLE table_name (    id INT PRIMARY KEY AUTO_INCREMENT,    column1 datatype1,    column2 datatype2,    ...);

    需要注意的是,每个 InnoDB 表只能有一个主键,且主键不能为 NULL。此外,使用自增长列作为主键时,需要注意自增长列的范围,避免发生溢出。通常建议使用无符号整型作为自增长列的数据类型,以提高自增长列的范围。

  3. 每个表只能定义一个主键 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。 一个列名只能在复合主键列表中出现一次。 复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。

  4. InnoDB主键建表时选择自增主键即可,设置好自增步值,防止通过程序插入导致的主键冲突。

  5. 您好,建议添加自增主键,递增与 InnoDB 本身数据的存储原理相契合,有利于数据的顺序存储及读取,更好的避免插入过程中的数据分页。