如何从SQL Server的现有表中删除列

514 阅读2分钟

我们通常先为我们希望存储在关系数据库中的数据创建模式。这使我们能够在创建数据之前预先定义我们的要求。然而,数据是动态的,即使是精心定义的模式也可能改变,导致无效的数据。

本教程的核心是让你了解如何从SQL Server的现有表中删除一列的基本知识。删除列是有益的,因为它允许你清理你的数据库,并从数据库中删除不需要的信息。

SQL Server 丢弃列

要从SQL服务器中的数据库表中删除一个列,请使用ALTER TABLE,然后再使用DROP COLUMN查询。

其语法如图所示

SELECT database_name;
ALTER TABLE TABLE_NAME
DROP COLUMN column_name, column_name_2, column_name_3...;

我们首先选择目标数据库。接下来,我们定义表的名称,以删除指定的列或列。最后,我们指定我们希望从表中删除的列的名称。

在删除一个列之前,确保它没有CHECK约束。如果一个列包含一个CHECK约束,SQL Server将要求你在删除一个列之前删除该约束。

注意:在SQL Server中不允许删除带有PRIMARY或FOREIGN键约束的列。

删除列 - 例子

为了说明使用SQL Server Drop column查询,让我们使用一个真实世界的数据库,如SalesDB样本数据库。你可以从下面的资源中下载并导入该数据库。

www.dropbox.com/s/zqg8lv20i…

下面的查询示例从上面资源中提供的样本数据库的Employees表中删除了MiddleInitial列。

USE salesdb;
ALTER TABLE Employees
DROP COLUMN MiddleInitial;

由于该列没有任何约束,SQL Server成功地从指定的表中删除了该列。

删除列 - 例2

如果你试图删除任何带有PRIMARY KEY约束的列,SQL Server会返回一个错误,如下面的查询示例所示。

USE salesdb;
ALTER TABLE Employees
DROP COLUMN EmployeeID;

由于EmployeeID列有PRIMARY KEY约束,SQL Server返回的错误是:

Msg 5074, Level 16, State 1, Line 2
The object 'EmployeePK' IS dependent ON COLUMN 'EmployeeID'.
ALTER TABLE DROP COLUMN EmployeeID failed because more objects accessed this COLUMN.

丢弃列 - 例3

要从数据库中删除多个列,请将它们指定为逗号分隔的查询,如示例中所示。

USE salesdb;
ALTER TABLE Employees
DROP COLUMN FirstName, LastName;

如果指定的列存在于表上,SQL服务器将按照查询中的规定删除它们。

删除列 - SSMS

你也可以使用SQL服务器管理工作室删除一个列。首先选择你的目标数据库 -> 扩展到表 -> 扩展目标表并选择列。展开列菜单,选择你的目标列。右键单击并选择删除选项。

总结

在这篇文章中,你学到了如何使用Transact-SQL和SQL Server Management Studio从SQL Server的数据库表中删除列。