SQL 自动递增 字段
自动递增字段
自动递增允许在向表中插入新记录时自动生成唯一编号。
通常,这是我们希望每次插入新记录时自动创建的主键字段。
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”。
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)
。
要向“Persons”表中插入一条新记录,我们无需为“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”表中插入一条新记录。“Personid”列将被分配 seq_person 序列的下一个编号。“FirstName”列将被设置为“Lars”,而“LastName”列将被设置为“Monsen”。