SQL - 自动递增



SQL 自动递增用于自动将唯一的顺序值添加到表的列中。

我们通常在创建表时为列定义自动递增。当我们将新记录插入表中时,唯一值将添加到这些记录中。

当我们在表列上使用自动递增时,无需向该列插入 NOT NULL 值。如果我们提供此类值,它们将覆盖唯一标识,并且递增将仅在 NULL 值(如果有)上继续;导致数据模糊。

不同的 RDBMS 以不同的方式支持自动递增功能。

MySQL 中的自动递增

在 MySQL 中,您可以使用名为 AUTO_INCREMENT 的属性将自动递增功能添加到表的列。

默认情况下,当我们在列上定义 AUTO_INCREMENT 属性时,唯一值从“1”生成;对于我们输入表中的每个新记录,列中的值将递增 1。因此,插入的第一条记录的值为 1,第二条记录的值为 2,依此类推。

语法

以下是将 AUTO_INCREMENT 属性添加到 MySQL 表列的语法:

CREATE TABLE table_name(
   column1 datatype AUTO_INCREMENT,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

示例

在查询中,我们创建一个名为 CUSTOMERS 的表,并将 AUTO_INCREMENT 添加到名为 ID 的列:

CREATE TABLE CUSTOMERS(
   ID INT PRIMARY KEY AUTO_INCREMENT,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

现在,让我们使用 INSERT 语句将值插入 CUSTOMERS 表:

INSERT INTO CUSTOMERS (NAME, AGE, ADDRESS, SALARY) VALUES
("Ramesh", 32, "Ahmedabad", 2000.00),
("Khilan", 25, "Delhi", 1500.00),
("Kaushik", 23, "Kota", 2000.00),
("Chaitali", 25, "Mumbai", 6500.00);

验证

要验证这一点,您需要使用 SELECT 查询检索 CUSTOMERS 的内容,如下所示:

SELECT * FROM CUSTOMERS;

输出

以下是上述查询的输出,您可以在此处观察到 ID 值是自动生成的:

ID 姓名 年龄 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00

现有列上的 AUTO_INCREMENT

MySQL 还允许您使用 ALTER TABLE 语句在现有表上实现 AUTO_INCREMENT 属性。

以下查询从 CUSTOMERS 表 CUSTOMERS 中的 ID 值 5 开始递增:

ALTER TABLE CUSTOMERS AUTO_INCREMENT = 100;

现在,让我们插入更多记录以查看 ID 值是否自动递增。

INSERT INTO CUSTOMERS(NAME, AGE, ADDRESS, SALARY) VALUES
("Hardik", 27, "Bhopal", 8500.00),
("Komal", 22, "MP", 4500.00),
("Muffy", 24, "Indore", 10000.00);

要查看上述表数据,我们使用以下 SELECT 查询:

SELECT * FROM CUSTOMERS;

输出

以下显示了上述查询的输出。它显示了自动递增的作用。我们得到新插入记录的 ID 值从 100 开始。

ID 姓名 年龄 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
100 Hardik 27 Bhopal 8500.00
101 Komal 22 Hyderabad 4500.00
102 Muffy 24 Indore 10000.00

SQL Server 中的自动递增

在 SQL Server 中,没有直接命令/查询来执行自动递增。相反,我们使用 IDENTITY() 属性。此属性的工作方式类似于 MySQL 中的 AUTO_INCREMENT 属性。它自动生成唯一的顺序编号,并且主要用于 PRIMARY KEY 约束。

语法

以下是 SQL Server 中 IDENTITY() 属性的基本语法:

CREATE TABLE table_name (
   column1 datatype IDENTITY [(seed, increment)],
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

此属性接受两个参数。下面描述了这些参数

  • seed:它设置自动递增列的起始值。
  • increment:它指定每增加一行值增加多少。

示例

在以下示例中,我们在名为 CUSTOMERS 的表的 ID 列上使用 IDENTITY() 属性:

CREATE TABLE CUSTOMERS(
   ID INT PRIMARY KEY IDENTITY(1,1),
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2)
);

创建表后,我们使用以下查询插入一些记录:

INSERT INTO CUSTOMERS(NAME, AGE, ADDRESS, SALARY) VALUES
('Ramesh', 32, 'Ahmedabad', 2000.00),
('Khilan', 25, 'Delhi', 1500.00),
('Kaushik', 23, 'Kota', 2000.00),
('Chaitali', 25, 'Mumbai', 6500.00);

要查看表数据,我们使用以下 SELECT 查询:

SELECT * FROM CUSTOMERS;

输出

以下是上述查询的输出,其中 ID 值是自动生成的:

ID 姓名 年龄 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
广告