SQL 自增字段

❮ SQL CREATE INDEX 创建索引语句

SQL Server 和 MySQL 中的日期函数 ❯

SQL 自增字段

更新于 2024/8/2 14:30:00

自增字段

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 任务。

默认地,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 使用 IDENTITY 关键字来执行 auto-increment 任务。

在上面的示例中,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 关键字来执行 auto-increment 任务。

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

提示: 要指定"Personid"列应从值10开始并递增5,请将autoincrement更改为autoincrement(10,5)。

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

INSERT INTO Persons (FirstName,LastName)

VALUES ('Lars','Monsen');

上面的SQL语句将在"Persons"表中插入一条新记录。"Personid"列将被指定一个唯一的值。"FirstName"列将设置为"Lars",而"LastName"列将设置为"Monsen"。

用于 Oracle 的语法

在 Oracle 中,代码稍微复杂一点。

您必须通过 sequence 对创建 auto-increment 字段(该对象生成数字序列)。

请使用下面的 CREATE SEQUENCE 语法:

CREATE SEQUENCE seq_person

MINVALUE 1

START WITH 1

INCREMENT BY 1

CACHE 10;

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

要在"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"。

❮ SQL CREATE INDEX 创建索引语句

SQL Server 和 MySQL 中的日期函数 ❯