SQL 自动增量

2025年3月17日 | 阅读 7 分钟

数据库用于逻辑地存储海量数据。您可能遇到过在表中为每条记录指定唯一编号有困难的各种情况。这种情况实际上是不可能的,因为手动输入受到限制。因此,没有“增加值”的余地。在这种情况下,您可以改用其他方法,并在 SQL 中选择自动递增。SQL 中的自动递增在每次向表中添加新记录时自动增加计数,以输入唯一编号。要熟悉 SQL 中的自动递增,让我们看一些论据以便更好地理解。

SQL 中的自动递增是什么?

顾名思义,自动递增被定义为一个字段,主要用于在任何时候为添加到表中的每个记录生成唯一编号。一般而言,它用于主键列,因为 SQL 中的主键应该唯一且非空。因此,自动递增使开发人员可以轻松地为所有记录自动生成唯一编号。

您存储在数据库中的数据不总是有唯一属性,因此有些记录会被单独选中和操作。为确保每个记录的此类唯一标识,您可以创建一个用于唯一标识的属性,该属性可以指定每一行。因此,在创建 such a unique identity 后,您需要使用自动递增进行设置,以便可以方便地将增加的值存储在数据库中。

SQL 中的自动递增通过轻松标识每个记录来增加优势。重要的是要记住,您需要在 CREATE 语句中将该列设置为自动递增。否则,可能会出现一些问题。因此,为了维护完整性,您需要为主键分配一个自动递增,以确保数据的身份在数据库中得到维护。

现在,既然您对 SQL 中的自动递增相当熟悉,让我们继续讨论不同数据库管理系统中的此字段。

SQL 中的自动递增功能。

自动递增的一些功能列在下面

  1. 它有助于创建可能没有任何唯一标识属性的数据主键。
  2. 自动递增中的值可以在任何时候显式初始化和修改。
  3. 可以轻松创建记录的唯一标识。
  4. 使用自动递增,可以轻松处理每条记录之间间隔的处理灵活性。
  5. 为自动递增编写 SQL 查询在语法上很容易。

设置自动递增

为了您的方便,您可以创建一个包含某些属性的表,例如 **CustomerID、CustomerName、Age、PhoneNumber** 等。要使用自动递增字段,您需要在 SQL Server 中使用 IDENTITY 关键字。要继续进行设置,让我们从与自动递增相关的语法和示例开始。

语法

SQL Server 示例

假设您必须按照上述语法创建一个名为 Customers 的表,其中包含 CustomerID、CustomerName、Age 和 PhoneNumber 列。在这种情况下,如果您创建自动递增,CustomerID 将被视为主键,因为它可以用作表的唯一标识符。

在上面的示例中,IDENTITY 的初始值已设为一,并且预计每当添加新记录时,该值都会增加一。您可以根据需要直接指定值,并且要插入值,您需要使用 INSERT 查询,如下所示。

如果您仔细观察,没有提到 CustomerID 列,因为它们将自动生成。因此,如果您想存储更多此类值,可以按以下方式进行。

包含上述数据并保存更改后,结果可能如下所示。

SQL Auto Increment

到目前为止,您已看到了 SQL 中自动递增的详尽版本。现在,您将看到一些重要操作和示例的快速回顾,以便清楚地了解自动递增及其多样化的应用。

创建自动递增列

更改自动递增列

每列的递增量

创建自动递增属性

首先,您需要创建一个名为 DataFlair_emp 的样本数据库,其中包含如下所示的列。

  1. ID int Auto Increment NOT NULL
  2. Name varchar(50)
  3. Location varchar(50)

使用以下查询来概述上述应用的列。

结果可能如下所示。

SQL Auto Increment

您可以看到数据库已创建,ID 定义为自动递增。您分配的下一个任务是使用以下查询将数据插入数据库。

在上述查询中,您主要输入了数据,而没有传递任何数值或 ID 列值。它由 SQL 中的自动递增自动处理,并且结果会自动分配相应的值。

可视化数据库的预期输出可以通过下图看到。

SQL Auto Increment

下一个任务是找到一种修改表的方法。之前,您已经看到了如何修改 SQL 表的代码片段,现在您将通过此示例进行实际操作。

上述代码片段的输出可能如下所示。

SQL Auto Increment

您可以注意到,为了在结果中插入多条记录,自动递增值已最初设置为 100。您可以添加高达 100 的此类值,它们将按一递增并作为主键存储在我们的数据库中。

自动递增示例

示例 1

输出

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+--------+

在上面的示例中,AUTO_INCREMENT 列没有指定值。MySQL 会自动分配数字,范围从 0 到生成的列序列的数量。例如,考虑以下格式。

如果您将列分配为 NOT NULL,则有可能将其分配给可以生成序列号的列。

对于这种情况,为自动递增列插入任何其他值可能会被自动重置,并且设置的值会遵循最大列的序列。例如

当您更新任何数据库中现有的自动递增列值时,表不会直接重置自动递增的序列。因此,您可以检索最近通过自动递增获取的值或最后插入的值。这些函数是连接特定的,并且由于此属性,对其他插入操作没有影响。

要补充的另一件事是,自动递增可以轻松处理更大值的最大序列。然而,在达到数据类型上限的过程中,由于最大限制,生成的序列号可能会失败。例如,如果您的最大允许序列设置为整数 127,那么相同的无符号可能具有设置为 255 的序列。因此,您必须最初遵循 TINYINT、BIGINT 等约定。

总结

在本教程中,您了解了 SQL 中的自动递增属性是什么以及如何使用它来**存储、顺序化和检索**数据。在后面的部分中,您熟悉了语法和大量的示例,以了解自动递增的流程如何适用于不同的情况,无论是插入还是修改表中的值。自动递增功能允许您在数据缺少某些唯一标识的基础上创建主键。通过这些特性和功能,自动递增允许您修改和弥合主键值之间的差距。


下一主题SQL Like