插件窝 干货文章 mysql主键是否自动递增

mysql主键是否自动递增

递增 自动 INCREMENT AUTO 384    来源:    2025-03-28

MySQL 主键自动递增详解

MySQL 主键是否自动递增取决于您如何定义它。以下是关于 MySQL 主键自动递增的详细说明:

1. 自动递增主键

在 MySQL 中,您可以通过 AUTO_INCREMENT 属性使主键自动递增:

CREATE TABLE users (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
);

特点: - 每次插入新记录时,主键值会自动增加 - 通常从 1 开始 - 可以手动指定起始值和增量步长

2. 非自动递增主键

主键也可以不是自动递增的:

CREATE TABLE products (
    product_code VARCHAR(20) NOT NULL,
    name VARCHAR(100) NOT NULL,
    PRIMARY KEY (product_code)
);

3. 自动递增的特点

  • 每个表只能有一个 AUTO_INCREMENT
  • 该列必须被索引(通常是主键)
  • 默认情况下从 1 开始,每次增加 1
  • 可以使用 ALTER TABLE 修改下一个自动递增值

4. 修改自动递增设置

-- 修改表的自动递增起始值
ALTER TABLE users AUTO_INCREMENT = 1000;

-- 创建表时指定起始值
CREATE TABLE users (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
) AUTO_INCREMENT = 1000;

5. 注意事项

  • 自动递增不保证连续(删除记录后会有间隔)
  • 最大值取决于列的数据类型(INT, BIGINT等)
  • 在复制或分片环境中需要特别注意自动递增的设置

总结:MySQL 主键是否自动递增取决于您是否在定义时添加了 AUTO_INCREMENT 属性,它不是默认行为,但常用于单列整数主键场景。