删除MS SQL Server中的列

时间:2009-04-16 10:34:23

标签: sql-server sql-server-2005

如何从现有表中删除列?

5 个答案:

答案 0 :(得分:93)

您正在寻找的命令是:

alter table tblName drop column columnName

其中tblName是表格的名称,columnName是列的名称,但您可能需要先做一些事情。

  • 如果列中有任何外键引用,则需要先删除它们。
  • 如果有使用该列的索引,则需要将其删除或将其调整为不使用该列。

请记住,此命令的性能可能不一定好。一个选项是等待停机时间,当您可以确定没有人将访问数据库,重命名当前表,然后使用create tableinsert into ... select from来传输您不想要的列我想要删除。

Oracle的后续版本之一实际上有一个软删除,它可以将列标记为未使用而不将其物理删除。它具有相同的效果,因为你不能再引用它,并且有alter table ... drop unused columns的命令,它意味着在安静的时间运行,这实际上是在物理上移除它的艰苦工作。

这样做的好处是可以立即“消失”列,而不会在繁忙时间拖拽数据库性能。

答案 1 :(得分:13)

ALTER TABLE XXX DROP COLUMN YYY;

答案 2 :(得分:3)

对于大型表格,这可能非常慢。创建一个新表,旧表的副本,但更改,并插入数据通常要快得多。删除旧表,然后重命名新表。

答案 3 :(得分:2)

这也可以通过SSMS GUI完成。

我喜欢这种方法,因为它会警告你,如果该列上有任何关系,也可以自动删除它们。正如PaxDiablo所说,如果存在关系,则必须先删除它们。

  1. 将表放在设计视图中(右键单击表格),如下所示:
  2. enter image description here

    1. 右键单击表的“设计”视图中的列,然后单击“删除” 列“
    2. enter image description here

      此时,如果有任何关系也需要删除,它会询问您是否也要删除这些关系。

答案 4 :(得分:0)

ALTER TABLE [Intake].[MER_SF_Opportunity_History] DROP COLUMN [[IntakeIsDeleted]]]
GO