我们通常先为我们希望存储在关系数据库中的数据创建模式。这使我们能够在创建数据之前预先定义我们的要求。然而,数据是动态的,即使是精心定义的模式也可能改变,导致无效的数据。
本教程的核心是让你了解如何从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样本数据库。你可以从下面的资源中下载并导入该数据库。
下面的查询示例从上面资源中提供的样本数据库的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的数据库表中删除列。