SQL: 如何在 SQL Server 中添加新的标识列并将列填充为标识
在本文中,我们将介绍如何在 SQL Server 中添加新的标识列,并将该列填充为唯一的标识值。
阅读更多:SQL 教程
什么是标识列?
标识列是在插入新行时自动增加和分配唯一的数字值的列。它通常用作主键,用于唯一标识每个行。
添加新的标识列
要在 SQL Server 中添加新的标识列,我们可以使用 ALTER TABLE
语句以及 ADD
和 IDENTITY
关键字。下面是添加标识列的语法:
ALTER TABLE 表名
ADD 列名 数据类型 IDENTITY(起始值, 增量)
其中,表名
是要添加新列的表的名称,列名
是要添加的列的名称,数据类型
是列的数据类型(例如,整数、bigint 等),起始值
是标识列要从哪个数字开始计数的值,增量
是标识列要递增的值。
让我们看一个具体的示例。假设我们有一个名为 Customers
的表,它包含 CustomerID
、FirstName
和 LastName
列。现在我们要添加一个新的标识列 ID
并将其填充为唯一的标识值。我们可以使用以下 SQL 语句:
ALTER TABLE Customers
ADD ID INT IDENTITY(1,1)
以上语句将向 Customers
表中添加一个名为 ID
的新列,并将其数据类型设置为整数。它还使用 IDENTITY(1,1)
指定了起始值为1,增量为1,以便自动分配唯一的标识值。
填充标识列
在添加了新的标识列之后,我们可以使用 UPDATE
语句将其填充为唯一的标识值。下面是填充标识列的语法:
UPDATE 表名
SET 标识列名 = 列名 = 下一个标识值
让我们使用前面的 Customers
表为例,将新添加的 ID
列填充为唯一的标识值。我们可以使用以下 SQL 语句:
UPDATE Customers
SET ID = (SELECT MAX(ID) FROM Customers) + ROW_NUMBER() OVER (ORDER BY CustomerID)
以上语句将 ID
列设置为 MAX(ID) + ROW_NUMBER() OVER (ORDER BY CustomerID)
,其中 ROW_NUMBER()
函数将分配一个连续的、唯一的标识值。
示例说明
假设我们有以下的 Customers
表:
CustomerID | FirstName | LastName |
---|---|---|
1 | John | Doe |
2 | Jane | Smith |
3 | David | Johnson |
我们想要添加一个新的标识列 ID
并将其填充为唯一的标识值。我们可以使用以上提到的 SQL 语句来实现:
ALTER TABLE Customers
ADD ID INT IDENTITY(1,1)
UPDATE Customers
SET ID = (SELECT MAX(ID) FROM Customers) + ROW_NUMBER() OVER (ORDER BY CustomerID)
执行以上语句后,Customers
表将变为:
CustomerID | FirstName | LastName | ID |
---|---|---|---|
1 | John | Doe | 1 |
2 | Jane | Smith | 2 |
3 | David | Johnson | 3 |
新的标识列 ID
已成功添加,并填充为唯一的标识值。
总结
在本文中,我们学习了如何在 SQL Server 中添加新的标识列,并将其填充为唯一的标识值。通过使用 ALTER TABLE
和 ADD
语句来添加新列,然后使用 UPDATE
语句来填充标识列,我们可以轻松地实现这个目标。标识列是在插入新行时自动增加和分配唯一的数字值的列,通常用作主键。