SQL AUTO INCREMENT 字段

SQL AUTO INCREMENT 字段

自增字段是一个数值列,当向表中插入新记录时,它会自动生成唯一的数字。

自增字段通常是 PRIMARY KEY 字段,我们希望每次插入新记录时,该字段自动被分配一个唯一的数字。

MySQL 的语法

MySQL 使用 AUTO_INCREMENT 关键字来实现自动递增功能。

以下 SQL 语句定义了 Persons 表中的 Personid 列为自动递增的主键字段:

CREATE TABLE Persons (
    Personid int AUTO_INCREMENT PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

AUTO_INCREMENT 的默认起始值是 1,并且每条新记录递增 1。

要让 AUTO_INCREMENT 以其他值开始,请使用以下 SQL 语句:

ALTER TABLE Persons AUTO_INCREMENT = 100;

当我们向 Persons 表中插入新记录时,不需要为 Personid 列指定值(会自动添加唯一值):

INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');

上面的 SQL 语句向 Persons 表中插入一条新记录,并且 Personid 将自动被分配下一个唯一数字。

SQL Server 的语法

SQL Server 使用 IDENTITY 关键字来实现自动递增功能。

以下 SQL 将 Persons 表中的 Personid 列定义为自动递增的主键字段:

CREATE TABLE Persons (
    Personid int IDENTITY(1,1) PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

在上面的例子中,IDENTITY 的起始值是 1,并且每条新记录递增 1。

提示:要指定 Personid 列从值 10 开始并以 5 递增,请将其更改为 IDENTITY(10,5)

当我们向 Persons 表中插入新记录时,不需要为 Personid 列指定值(会自动添加唯一值):

INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');

上面的 SQL 语句向 Persons 表中插入一条新记录,Personid 列将自动被分配下一个唯一数字。

MS Access 的语法

MS Access 使用 AUTOINCREMENT 关键字来实现自动递增功能。

以下 SQL 语句将 Persons 表中的 Personid 列定义为自动递增的主键字段:

CREATE TABLE Persons (
    Personid AUTOINCREMENT PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

AUTOINCREMENT 的默认起始值是 1,并且每条新记录递增 1。

提示:要指定 Personid 列从值 10 开始并以 5 递增,请将自增改为 AUTOINCREMENT(10,5)

当我们向 Persons 表中插入新记录时,不需要为 Personid 列指定值(会自动添加唯一值):

INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');

上面的 SQL 语句向 Persons 表中插入一条新记录,Personid 列将自动被分配下一个唯一数字。

Oracle 的语法

在 Oracle 中,您必须使用 SEQUENCE 对象创建自动递增字段(此对象生成数字序列)。

以下是 CREATE SEQUENCE 语法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

上面的代码创建了一个名为 seq_personSEQUENCE 对象,起始值为 1,每次递增 1。它还会缓存最多 10 个值以提高性能。CACHE 选项指定将存储在内存中的序列值的数量,以便更快地访问。

当我们向 Persons 表中插入新记录时,必须使用 nextval 函数(该函数从 seq_person 序列中检索下一个值):

INSERT INTO Persons (Personid, FirstName, LastName)
VALUES (seq_person.nextval, 'Lars', 'Monsen');

上面的 SQL 语句向 Persons 表中插入一条新记录,Personid 列将被分配来自 seq_person 序列的下一个唯一数字。