登录 |  注册
首页 >  数据库 >  SQL >  SQL AUTO INCREMENT字段

SQL AUTO INCREMENT字段

Auto-increment 会在新记录插入表中时生成一个唯一的数字。

我们通常希望在每次插入新记录时自动创建主键字段的值。

我们可以在表中创建一个自动增量(auto-increment)字段。

用于 MySQL 的语法

以下SQL语句将 "Persons" 表中的“ID”列定义为自动递增(auto-increment)主键字段:

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
姓名 varchar(255) NOT NULL,
地址 varchar(255),
城市 varchar(255),
省份 varchar(255),
PRIMARY KEY (ID)
)

MySQL使用AUTO_INREMENT关键字来执行自动增量( auto-increment )任务。

默认情况下,AUTO_INREMENT的起始值为1,每个新记录增加1。

若要以其他值开始AUTO_INREMENT序列,请使用以下SQL语法:

ALTER TABLE Persons AUTO_INCREMENT=100

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

INSERT INTO Persons (姓名,城市) VALUES ('王磊','上海市')

上面的SQL语句在 "Persons" 表中插入一个新记录。“ID”栏将得到唯一值。"姓名"栏设置为"王磊","城市"栏设置为"上海市"。

用于 SQL Server 的语法

以下SQL语句将 "Persons" 表中的“ID”列定义为自动递增( auto-increment )主键字段:

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
姓名 varchar(255) NOT NULL,
地址 varchar(255),
城市 varchar(255),
省份 varchar(255)
)

MS SQL Server使用IDENTITY关键字执行自动增量( auto-increment )任务。

在上面的示例中,IDENTITY的起始值为1,每个新记录增量为1。

提示:指定“ID”列以10开头,并递增5,将标识( identity )更改为IDENTITY(105)。

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

INSERT INTO Persons (姓名,城市) VALUES ('王磊','上海市')

上面的 SQL 语句在 "Persons" 表中插入一个新记录。“ID”栏将得到唯一值。"姓名"栏设置为"王磊","城市"栏设置为"上海市"。

用于 Access 的语法

以下 SQL 语句将 "Persons" 表中的“ID”列定义为自动递增( auto-increment )主键字段:

CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
姓名 varchar(255) NOT NULL,
地址 varchar(255),
城市 varchar(255),
省份 varchar(255)
)

MS Access使用 AUTOINCREMENT 关键字执行自动增量( auto-increment )任务。

默认情况下,AUTOINCREMEN的起始值为1,每个新记录递增 1。

提示:指定“ID”栏以10开头,并递增5,将自动递增( autoincrement )更改为自动递增(105)( AUTOINCREMENT(10,5))。

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

INSERT INTO Persons (姓名,城市) VALUES ('王磊','上海市')

上面的 SQL 语句在 "Persons" 表中插入一个新记录。“ID”栏将得到唯一值。"姓名"栏设置为"王磊","城市"栏设置为"上海市"。

用于Oracle中用法

在 Oracle 中,代码有点复杂。

您必须使用序列( sequence )对象(该对象生成数字序列)创建自动增量( auto-increment )字段。

使用以下CREATSEQUENT语法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

上面的代码创建了一个名为seq_pean的序列( sequence) 对象,它以1开头,以1递增。此对象缓存10个值以提高性能。缓存选项指定要存储多少序列值以提高访问速度。

要在"Persons" 表中插入新记录,我们必须使用nextval函数,该函数从seq_hor序列检索下一个值:

INSERT INTO Persons (ID,姓名,城市) VALUES (seq_person.nextval,'王磊','上海市')

上面的SQL语句在 "Persons" 表中插入一个新记录。"ID" 列从 seq_person 序列中分配下一个数字。"姓名"栏设置为"王磊","城市"栏设置为"上海市"。

上一篇: SQLALTERTABLE语句
下一篇: SQL VIEW 视图语法
推荐文章
  • mysql只支持一种join算法:Nested-LoopJoin(嵌套循环连接),但Nested-LoopJoin有三种变种:SimpleNested-LoopJoin,IndexNested-LoopJoin,BlockNested-LoopJoin(简单-索引-缓冲区)原理:1.SimpleNe
  • redis是一个内存数据库,一旦断电或服务器进程退出,内存数据库中的数据将全部丢失,所以需要redis持久化 redis持久化就是把数据保存在磁盘上,利用永久性存储介质将数据保存,在特定的时间将保存的数据进行恢复的工作机制redis提供两种持久化机制RDB:存储数据结果,关注点在数据AOF:存储操作
  • 通过SQL的执行过程来介绍MySQL的基础结构.     首先有一个user_info表,表里有一个id字段,执行下面这条查询语句:Select * form user_info where i
  • 索引(Index)是帮助MySQL高效获取数据的数据结构,索引的目的在于提高查询效率,就像字典和书籍的目录一样,有了目录,可以帮助你快速查找你需要的内容。可以理解为一个排好序的快速查找数据结构。也就是
  • 说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。今天我们就先来聊聊MySQL中事务的隔离性的实现原理,后续还会继续出文章分析其他特性的
  • 前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句
学习大纲