SQL 自动递增字段
自动递增字段
自动递增允许在将新记录插入表时自动生成唯一编号。
通常,我们希望每次插入新记录时自动创建的都是主键字段。
MySQL 语法
以下 SQL 语句定义了 "Persons" 表中的 "Personid" 列为一个自动递增主键字段。
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 语句定义了 "Persons" 表中的 "Personid" 列为一个自动递增主键字段。
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 语句定义了 "Persons" 表中的 "Personid" 列为一个自动递增主键字段。
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 中,代码会稍微复杂一些。
您必须使用 sequence 对象创建一个自动递增字段(此对象会生成一个数字序列)。
使用以下 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"。