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”。