MySQL 序列使用(AUTO_INCREMENT)详细说明

  1. AUTO_INCREMENT 概述

    • AUTO_INCREMENT 是 MySQL 中用于自动生成唯一标识符的属性,通常用于主键列。

    • 每次插入新记录时,MySQL 会自动为该列生成一个比当前最大值大1的值。

  2. 创建表时使用 AUTO_INCREMENT

    • 在创建表时,可以为某一列指定 AUTO_INCREMENT 属性。

    • 示例:

      CREATE TABLE users (
          id INT AUTO_INCREMENT PRIMARY KEY,
          username VARCHAR(50) NOT NULL,
          email VARCHAR(100) NOT NULL
      );
    • 在这个例子中,id 列会自动递增。

  3. 插入数据

    • 插入数据时,不需要为 AUTO_INCREMENT 列指定值,MySQL 会自动生成。

    • 示例:

      INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
      INSERT INTO users (username, email) VALUES ('jane_doe', 'jane@example.com');
    • 第一次插入时,id 为1,第二次插入时,id 为2。

  4. 获取最后插入的 ID

    • 使用 LAST_INSERT_ID() 函数可以获取最后插入的 AUTO_INCREMENT 值。

    • 示例:

      SELECT LAST_INSERT_ID();
  5. 修改 AUTO_INCREMENT 起始值

    • 可以使用 ALTER TABLE 语句修改 AUTO_INCREMENT 的起始值。

    • 示例:

      ALTER TABLE users AUTO_INCREMENT = 100;
    • 下一次插入时,id 将从100开始。

  6. 重置 AUTO_INCREMENT 值

    • 如果需要重置 AUTO_INCREMENT 值,可以使用 ALTER TABLE 语句。

    • 示例:

      ALTER TABLE users AUTO_INCREMENT = 1;
  7. 删除记录后的 AUTO_INCREMENT

    • 删除记录不会影响 AUTO_INCREMENT 的值,即使删除了最大值的记录,下一次插入仍然会继续递增。

  8. 注意事项

    • AUTO_INCREMENT 列必须是整数类型(如 INTBIGINT 等)。

    • 每个表只能有一个 AUTO_INCREMENT 列。

    • AUTO_INCREMENT 列通常用作主键。

案例

  1. 创建表

    CREATE TABLE products (
        product_id INT AUTO_INCREMENT PRIMARY KEY,
        product_name VARCHAR(100) NOT NULL,
        price DECIMAL(10, 2) NOT NULL
    );
  2. 插入数据

    INSERT INTO products (product_name, price) VALUES ('Laptop', 999.99);
    INSERT INTO products (product_name, price) VALUES ('Smartphone', 499.99);
  3. 查询数据

    SELECT * FROM products;

    输出:

    +------------+--------------+--------+
    | product_id | product_name | price  |
    +------------+--------------+--------+
    |          1 | Laptop       | 999.99 |
    |          2 | Smartphone   | 499.99 |
    +------------+--------------+--------+
  4. 获取最后插入的 ID

    SELECT LAST_INSERT_ID();

    输出:

    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                2 |
    +------------------+
  5. 修改 AUTO_INCREMENT 起始值

    ALTER TABLE products AUTO_INCREMENT = 100;
  6. 插入新数据

    INSERT INTO products (product_name, price) VALUES ('Tablet', 299.99);
  7. 查询数据

    SELECT * FROM products;

    输出:

    +------------+--------------+--------+
    | product_id | product_name | price  |
    +------------+--------------+--------+
    |          1 | Laptop       | 999.99 |
    |          2 | Smartphone   | 499.99 |
    |        100 | Tablet       | 299.99 |
    +------------+--------------+--------+

通过以上步骤,你可以有效地使用 MySQL 的 AUTO_INCREMENT 属性来管理表中的唯一标识符。

本篇文章内容来源于:MySQL 序列使用(AUTO_INCREMENT)详细说明以及案例