天天看点

数据库必知词汇:AUTO INCREMENT(自增)字段

在数据库中,我们通常希望在每次插入新记录时,自动地创建主键字段的值。此时,我们可以在表中创建一个AUTO INCREMENT字段。注意设置自增字段时,字段类型必须为Int型,一般都用来作为主键。

接下来分别介绍在MySQL、SQL Server和Oracle三种数据库中关于AUTO INCREMENT的语法:

(1) 用于 MySQL 的语法

下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:

CREATE TABLE Persons

(

P_Id int NOT NULL AUTO_INCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)

MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。默认地,AUTO_INCREMENT 的开始值是 1,每新增一条记录字段值递增 1。

要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:

ALTER TABLE Persons AUTO_INCREMENT=100

要在 "Persons" 表中插入新记录,我们不必为 "P_Id" 列规定值(会自动添加一个唯一的值):

INSERT INTO Persons (FirstName,LastName)

VALUES ('Bill','Gates')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 会被赋予一个唯一的值。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

(2) 用于 SQL Server 的语法

P_Id int PRIMARY KEY IDENTITY,

City varchar(255)

MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务。默认地,IDENTITY 的开始值是 1,每新增一条记录字段值递增 1。要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)。

(3) 用于 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 个值以提高性能。CACHE 选项规定了为了提高访问速度要存储多少个序列值。

要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):

INSERT INTO Persons (P_Id,FirstName,LastName)

VALUES (seq_person.nextval,'Lars','Monsen')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 的赋值是来自seq_person 序列的下一个数字。"FirstName" 会被设置为"Bill","LastName"列会被设置为 "Gates"。

资料来源:

SQL AUTO INCREMENT 字段 | W3School

https://www.w3school.com.cn/sql/sql_autoincrement.asp