SQL 自动递增指南:在主流数据库中实现唯一标识符

在 SQL 数据库中,主键对于唯一标识记录至关重要。然而,有时为每条记录手动分配唯一值并不实际,尤其是在处理海量数据集时。为了简化这一过程,SQL 数据库提供了自动递增功能,可以为指定列自动生成唯一的数值

本文将深入介绍如何在 SQL Server, MySQL, PostgreSQL, MS Access 和 Oracle 等主流 SQL 数据库中使用自动递增功能,并提供实用的示例和用例。

1. SQL Server 自动递增

SQL Server 中,自动递增功能是通过 **IDENTITY** 属性实现的。该属性允许数据库为表中的每个新记录自动生成唯一编号。

  • 起始值 – 指定编号的起始位置(在本例中为 101)。
  • 增量值 – 决定每条新记录的值增加多少(此处为 1)。

示例

让我们创建一个学生表,其中包含 StudentIDFirstNameLastName 字段。我们将使用自动递增功能自动生成 StudentID,并将其设为该表的主键。假设 IDENTITY 的起始值为 101,并且每增加一条新记录,该自动生成的键就增加 1。

CREATE TABLE Students(
Student_ID int IDENTITY(101, 1) PRIMARY KEY, 
First_Name varchar(255),
Last_Name varchar(255)
);

#### 使用自动递增插入数据:

要向学生表中插入新记录,我们不需要指定 Student_ID 的值,因为它会被自动添加。

INSERT INTO Students(First_Name, Last_Name ) 
VALUES (‘Deeksha‘, ‘Jain‘);

INSERT INTO Students(First_Name, Last_Name ) 
VALUES (‘Kavisha‘, ‘Parikh‘);

输出结果:

!image 2. MySQL 自动递增

MySQL 中,我们使用 AUTO_INCREMENT关键词来将列设置为自动递增。默认情况下,计数器从 1 开始,并且每插入一行新数据就增加 1

示例

让我们创建一个包含 StudentIDFirstNameLastName 字段的学生表,我们将使用自动递增来自动生成 StudentID,并将其设为该表的主键

CREATE TABLE Students(
Student_ID int AUTO_INCREMENT PRIMARY KEY, 
First_Name varchar(255),
Last_Name varchar(255)
);

使用自动递增插入数据:

要向学生表中插入新记录,我们不需要指定 Student_ID 的值,因为它会被自动添加,第一条记录的键值将为 1,后续每条记录的键值都会增加 1

INSERT INTO Students(First_Name, Last_Name ) 
VALUES (‘Anish‘, ‘Jain‘);

INSERT INTO Students(First_Name, Last_Name ) 
VALUES (‘Akshita‘, ‘Sharma‘);

INSERT INTO Students(First_Name, Last_Name ) 
VALUES (‘Shruti‘, ‘Sogani‘);

输出结果:!image

#### 修改自动递增的起始值

要修改默认的起始值,我们可以使用ALTER TABLE命令,如下所示:

ALTER TABLE Students AUTO_INCREMENT = new_value;

#### 调整增量间隔:

在 MySQL 中,我们还可以修改 AUTOINCREMENT 值增加的间隔。默认情况下,它每次增加 1,但我们可以通过 INLINECODE1dc5cd1c 系统变量来更改它。

要修改增量值(即数值增加的步长),我们可以设置 INLINECODE6cb00fda 变量,其中 newinterval_value 是我们想要使用的间隔值。

**SET @@auto_increment_increment = new_interval_value;**

3. PostgreSQL 自动递增

PostgreSQL 中,我们使用 SERIAL 关键词来实现列的自动递增。这是创建一个自动递增的整数列的简写形式。

示例

让我们创建一个包含 StudentIDFirstNameLastName 字段的学生表,我们将使用自动递增来自动生成 StudentID,并将其设为该表的主键。

CREATE TABLE Students(
Student_ID int SERIAL PRIMARY KEY, 
First_Name varchar(255),
Last_Name varchar(255)
);

#### 使用自动递增插入数据

要向学生表中插入新记录,我们不需要指定 Student_ID 的值,因为它会被自动添加。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/48921.html
点赞
0.00 平均评分 (0% 分数) - 0