开发者社区 > 数据库 > 关系型数据库 > 正文

请问InnoDB 主键如何设置呢?

请问InnoDB 主键如何设置呢?

展开
收起
felix@ 2023-03-31 12:12:45 1200 0
6 条回答
写回答
取消 提交回答
  • 在 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 列,以确保每行数据都有一个唯一标识。

    2023-04-02 08:38:04
    赞同 展开评论 打赏
  • 在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_table
    ADD PRIMARY KEY (id);
    

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

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

    2023-03-31 23:02:12
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。
    • 在创建表时定义主键:在创建表的时候,可以通过在列定义中使用 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。此外,使用自增长列作为主键时,需要注意自增长列的范围,避免发生溢出。通常建议使用无符号整型作为自增长列的数据类型,以提高自增长列的范围。

    2023-03-31 19:01:57
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

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

    2023-03-31 15:16:20
    赞同 展开评论 打赏
  • 从事java行业8年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

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

    2023-03-31 13:32:36
    赞同 展开评论 打赏
  • 今天也要加油吖~

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

    2023-03-31 12:13:14
    赞同 展开评论 打赏
滑动查看更多

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 云数据库 RDS MySQL 版
  • 云原生数据库 PolarDB
  • 相关电子书

    更多
    低代码开发师(初级)实战教程 立即下载
    冬季实战营第三期:MySQL数据库进阶实战 立即下载
    阿里巴巴DevOps 最佳实践手册 立即下载