SQL Server 重命名列

17 Mar 2025 | 4 分钟阅读

SQL Server 允许我们在需要时更改列。当列名无意义或未达到其创建目的时,我们将重命名表列。在更改列名之前,必须确保我们具有对该对象的 ALTER 权限。

限制和约束

SQL Server 在更改列名时有一些限制,因为当我们重命名列时,并不意味着对该列的所有引用也将被重命名。我们必须手动修改属于已重命名列的所有对象。

例如,如果我们想更改在 触发器 中也引用的表的列,则需要修改触发器以反映新的列名。sys.sql_expression_dependencies 可用于列出更改名称之前对象的所有依赖项。

我们主要可以通过两种方式在 SQL Server 中重命名表列

  1. Transact-SQL。
  2. SQL Server Management Studio (SSMS)

Transact-SQL

SQL Server 提供了一个名为 SP_RENAME 的标准存储过程,用于更改当前数据库中用户创建的对象的名称。用户创建的对象可以是表、列、索引、别名数据类型等。

当我们更改对象名称的某些部分时,脚本和存储过程可能会中断。我们建议您 删除 该对象并使用新名称 重新创建 它,而不是使用此语句来更改存储过程、触发器、用户定义函数或视图的名称。

使用此方法更改列名的语法是

重命名列示例

以下示例演示了使用 SP_RENAME 存储过程的 SQL Server 重命名列。为此,我们将使用一个包含以下数据的 '学生'

Rename Columns in SQL Server

如果我们想将该表的 '城市' 列更改为新名称 'city_name',我们可以使用上述 SQL Server 语法或存储过程,如下所示

执行此脚本后,我们将收到以下消息

Rename Columns in SQL Server

当我们验证 '学生' 表时,我们可以看到 'city' 的列名已成功更改

Rename Columns in SQL Server

SQL Server Management Studio (SSMS)

SSMS 是一个 Windows 软件工具,用于通过图形界面连接并使用我们的 SQL Server,而不是使用命令行。管理工作室允许我们通过以下方式重命名表列

  1. 使用对象资源管理器重命名列
  2. 双击列名
  3. 使用表设计器重命名列

让我们详细讨论它们中的每一个。

使用对象资源管理器重命名列

以下步骤用于使用对象资源管理器更改列名

步骤 1: 转到数据库 -> 表菜单并展开它。

步骤 2: 选择所需的表并展开它。

步骤 3: 选择“列”并展开它们。

步骤 4: 右键单击要更改的列名,然后选择“重命名”选项。

下图解释了以上所有步骤,我们选择了“学生”

Rename Columns in SQL Server

步骤 5: 为您选择的列键入一个新名称。

步骤 6: 刷新数据库或表以完成重命名步骤。

步骤 7: 执行 SELECT 语句以验证更改后的列名。

使用表设计器重命名列

以下步骤用于使用对象资源管理器更改列名

步骤 1: 转到数据库 -> 表菜单并展开它。

步骤 2: 选择要在其中更改列名的所需表,右键单击它,然后从上下文菜单中选择“设计”选项。

Rename Columns in SQL Server

步骤 3: 一旦我们选择了“设计”选项,我们就会看到表处于设计模式,如下图所示。

Rename Columns in SQL Server

步骤 4: 选择要更改的列,然后为此列键入新名称。 让我将 first_name 列重命名为 f_name

步骤 5: 要保存您在设计窗口中所做的更改,请单击“关闭”按钮,然后在显示的弹出窗口中单击“”按钮。

Rename Columns in SQL Server

我们可以通过导航到“文件”菜单并单击“保存表名”或在键盘上按 CTRL+S 来用另一种方式保存设计窗口中所做的更改。

Rename Columns in SQL Server

步骤 6: 执行 SELECT 语句以验证更改后的列名

双击列名

我们可以使用以下步骤通过双击来重命名列

步骤 1: 转到数据库 -> 表 -> 列。

步骤 2: 选择要更改的列名并双击。下图更清楚地解释了它

Rename Columns in SQL Server

步骤 3: 为您选择的列键入一个新名称。

步骤 4: 刷新数据库或表以完成重命名步骤。

步骤 5: 执行 SELECT 语句以验证更改后的列名。

注意:使用 SSMS 重命名列名不是一个好主意,因为它会使 DBA 在使用数据库表时更难理解。因此,始终建议使用 T-SQL 查询来更改数据库。


下一主题SQL Server CASE