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);
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;
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
);
该属性接受两个参数。它们描述如下:
-
seed: 为自增列设置起始值。
-
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;