Sql 简明教程

SQL - Auto Increment

SQL 自动增量用于自动向表的列中添加唯一的顺序值。

我们通常在创建表时定义列上的自动增量。当我们在表中插入新记录时,将向其添加唯一值。

不同的 RDBMS 以不同的方式支持自动增量特性。

Auto Increment in MySQL

在 MySQL 中,可以使用名为 AUTO_INCREMENT 的属性向表的列添加自动增量特性。

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

Syntax

以下是向 MySQL 表的列中添加 AUTO_INCREMENT 属性的语法 -

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

Example

在查询中,我们创建一个名为 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);

Verification

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

SELECT * FROM CUSTOMERS;

Output

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

ID

NAME

AGE

ADDRESS

SALARY

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 on Existing Columns

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

以下查询开始在 CUSTOMERS 表 CUSTOMERS 中从 5 对 ID 值进行递增 -

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;

Output

上述查询的输出如下所示。它显示了自动递增功能。ID 值从 100 开始为新插入记录获取 ID 值。

ID

NAME

AGE

ADDRESS

SALARY

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

Auto Increment in SQL Server

在 SQL Server 中,没有直接命令/查询来执行自动递增。相反,我们使用 IDENTITY() 属性。该属性类似于 MySQL 中的 AUTO_INCREMENT 属性。它自动生成唯一、连续的数字,并且主要在 PRIMARY KEY 约束中使用。

Syntax

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

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

该属性接受两个参数。它们描述如下:

  1. seed: 为自增列设置起始值。

  2. increment: 指定每次新行增加的值。

Example

在以下示例中,我们在名为 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;

Output

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

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

Ahmedabad

2000.00

2

Khilan

25

Delhi

1500.00

3

Kaushik

23

Kota

2000.00

4

Chaitali

25

Mumbai

6500.00