SQL AUTO INCREMENT 字段
SQL AUTO INCREMENT 字段
自增字段是一个数值列,当向表中插入新记录时,它会自动生成唯一的数字。
自增字段通常是 PRIMARY KEY 字段,我们希望每次插入新记录时,该字段自动被分配一个唯一的数字。
MySQL 的语法
MySQL 使用 AUTO_INCREMENT 关键字来实现自动递增功能。
以下 SQL 语句定义了 Persons 表中的 Personid 列为自动递增的主键字段:
CREATE TABLE Persons (
Personid int AUTO_INCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
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 将自动被分配下一个唯一数字。
SQL Server 的语法
SQL Server 使用 IDENTITY 关键字来实现自动递增功能。
以下 SQL 将 Persons 表中的 Personid 列定义为自动递增的主键字段:
CREATE TABLE Persons (
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
在上面的例子中,IDENTITY 的起始值是 1,并且每条新记录递增 1。
提示:要指定 Personid 列从值 10 开始并以 5 递增,请将其更改为 IDENTITY(10,5)。
当我们向 Persons 表中插入新记录时,不需要为 Personid 列指定值(会自动添加唯一值):
INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');
上面的 SQL 语句向 Persons 表中插入一条新记录,Personid 列将自动被分配下一个唯一数字。
MS Access 的语法
MS Access 使用 AUTOINCREMENT 关键字来实现自动递增功能。
以下 SQL 语句将 Persons 表中的 Personid 列定义为自动递增的主键字段:
CREATE TABLE Persons (
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
AUTOINCREMENT 的默认起始值是 1,并且每条新记录递增 1。
提示:要指定 Personid 列从值 10 开始并以 5 递增,请将自增改为 AUTOINCREMENT(10,5)。
当我们向 Persons 表中插入新记录时,不需要为 Personid 列指定值(会自动添加唯一值):
INSERT INTO Persons (FirstName, LastName)
VALUES ('Lars', 'Monsen');
上面的 SQL 语句向 Persons 表中插入一条新记录,Personid 列将自动被分配下一个唯一数字。
Oracle 的语法
在 Oracle 中,您必须使用 SEQUENCE 对象创建自动递增字段(此对象生成数字序列)。
以下是 CREATE SEQUENCE 语法:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10;
上面的代码创建了一个名为 seq_person 的 SEQUENCE 对象,起始值为 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 序列的下一个唯一数字。