SQL Server 删除列

17 Mar 2025 | 4 分钟阅读

SQL Server 允许用户在不再使用或过时时从表中删除一列或多列。在从表中删除列之前,需要对该对象拥有 ALTER 权限。在本文中,我们将讨论如何从现有表中删除列的完整概述。

限制和约束

我们无法删除表中具有 CHECK 约束的列。如果要删除带有约束的列,我们首先删除约束。 SQL Server 不会删除带有 PRIMARY 或 FOREIGN KEY 约束或其他依赖项的列。但是,我们可以通过使用表设计器来做到这一点。我们将首先删除对该列的所有依赖项,同时使用对象资源管理器或 Transact-SQL 来删除列。

我们主要可以通过两种方式在 SQL Server 中删除列

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

Transact-SQL

SQL Server 具有 ALTER TABLE DROP COLUMN 命令,用于从现有表中删除列。我们可以使用以下语法来执行此操作

在这个语法中,

  • 首先,我们将写下要从中删除列的表名。
  • 其次,我们将写下要删除的列名。

我们还可以一次删除现有表中的多列。我们可以通过在 DROP COLUMN 子句之后指定要从表中删除的列的列表(用逗号分隔)来完成此操作。以下语法更清楚地解释了这一点

DROP COLUMN 示例

此示例说明了如何从 SQL Server 中的表中删除列。我们将首先使用以下语句创建一个名为“Users”的表

我们的表结构如下图所示,其中总共有 七列:

Drop Column in SQL Server

假设我们想删除表中不再需要的 'City' 列。我们可以使用以下语句删除此列

执行此语句将返回下图所示的消息

Drop Column in SQL Server

在某些情况下,我们希望一次从表中删除多列。 例如,我们可以通过执行以下语句从“Users”表中删除“Branch”和“Email”列

当命令成功运行时,我们将收到以下消息

Drop Column in SQL Server

正如我们在表定义中看到的那样,Mobile_no 列具有 CHECK 约束。因此,我们无法删除它。如果尝试运行以下命令,将会收到错误

这是错误消息

Drop Column in SQL Server

如果要删除 Mobile_no 列,则首先需要使用以下语句删除其 CHECK 约束

现在,我们可以删除 Mobile_no 列。请参见以下输出

Drop Column in SQL Server

SQL Server Management Studio (SSMS)

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

  1. 使用表设计器删除列
  2. 使用对象资源管理器删除列

让我们详细了解它们中的每一个。

使用表设计器删除列

以下步骤用于使用表设计器删除列

步骤 1: 在对象资源管理器中,转到数据库 -> 表菜单并展开它。

步骤 2: 选择要从中删除列的所需表,右键单击它,然后从上下文菜单中选择 设计 选项。

Drop Column in SQL Server

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

Drop Column in SQL Server

步骤 4: 右键单击我们要删除的列,然后从菜单中选择 删除列 选项。

Drop Column in SQL Server

步骤 5: 如果您收到确认删除列及其关系的提示消息,请单击 按钮。

使用对象资源管理器删除列

以下步骤用于使用对象资源管理器删除列

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

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

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

步骤 4: 右键单击要删除的列名,然后选择“删除”选项。

Drop Column in SQL Server

步骤 5:删除对象 对话框中,单击 确定

注意:如果列包含约束或其他依赖项,则会在“删除对象”对话框中显示错误消息。删除引用的约束以解决此问题。

Drop Column in SQL Server

步骤 6: 刷新数据库或表以完成删除步骤。