轻松上手,快乐学习!

SQL AUTO INCREMENT 字段


SQL AUTO INCREMENT 字段

AUTO INCREMENT 在插入表新记录中时自动生成唯一编号。

通常每次插入新记录时自动创建的字段为主键字段。


MySQL的语法

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

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

MySQL使用AUTO_INCREMENT关键字来执行自动增量功能。

默认情况下,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”列将被赋予唯一值。“FirstName”列将设置为“Lars”,“LastName”列将设置为“Monsen”。


SQL Server的语法

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

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

MS SQL Server使用IDENTITY关键字执行自动增量功能。

在上面的示例中,IDENTITY的起始值为1,并且对于每个新记录,它将增加1。

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

要在“Persons”表中插入新记录,我们不必为“Personid”列指定值(将自动添加唯一值):

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

上面的SQL语句会在“Persons”表中插入一条新记录。“Personid”列将被赋予唯一值。“FirstName”列将设置为“Lars”,“LastName”列将设置为“Monsen”。


MS Access 语法

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

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

MS Access使用AUTOINCREMENT关键字执行自动增量功能。

默认情况下,AUTOINCREMENT的起始值为1,每个新记录的起始值将增加1。

提示:要指定“Personid”列应从值10开始并增加5,请将自动增量更改为AUTOINCREMENT(10,5)。

要在“人员”表中插入新记录,我们不必为“Personid”列指定值(将自动添加唯一值):

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

上面的SQL语句会在“Persons”表中插入一条新记录。“Personid”列将被赋予唯一值。“FirstName”列将设置为“Lars”,“LastName”列将设置为“Monsen”。


Oracle语法

在Oracle中,代码有点棘手。

您必须使用序列对象创建自动增量字段(此对象生成数字序列)。

使用以下CREATE SEQUENCE语法:

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

上面的代码创建了一个名为seq_person的序列对象,它以1开头并将增加1.它还将缓存最多10个性能值。cache选项指定将在内存中存储多少个序列值以便更快地访问。

要在“Persons”表中插入新记录,我们必须使用nextval函数(此函数从seq_person序列中检索下一个值):

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

上面的SQL语句会在“Persons”表中插入一条新记录。将从seq_person序列中为“Personid”列分配下一个数字。“FirstName”列将设置为“Lars”,“LastName”列将设置为“Monsen”。