删除 MS SQL Server 中的列

Posted

技术标签:

【中文标题】删除 MS SQL Server 中的列【英文标题】:Deleting columns in MS SQL Server 【发布时间】:2009-04-16 10:34:22 【问题描述】:

如何从现有表中删除列?

【问题讨论】:

How to remove a column from an existing table? 的可能重复项 实际上,另一个问题是在这个问题 2 年后写的,所以这将是重复的。 虽然另一个问题是在这个问题之后写的,但它获得了更多的观点和投票。必须是一个对谷歌更友好的标题或其他东西。因此,我投票结束了这个问题。 【参考方案1】:

您要查找的命令是:

alter table tblName drop column columnName

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

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

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

Oracle 的较晚版本之一实际上具有软删除功能,它可以将列标记为未使用,而无需物理删除它。它具有相同的效果,因为您无法再引用它,并且有一个类似于 alter table ... drop unused columns 的命令,该命令旨在在安静的时间内运行,它实际上是在物理上删除它的艰苦工作。

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

【讨论】:

【参考方案2】:

ALTER TABLE XXX DROP COLUMN YYY;

【讨论】:

【参考方案3】:

这也可以通过 SSMS GUI 完成。

我喜欢这种方法,因为它会警告您该列是否存在任何关系,并且还可以自动删除这些关系。正如 PaxDiablo 所说,如果存在关系,则必须先将其删除。

    将表格放入设计视图(右键单击表格),如下所示:

    右键单击表格设计视图中的列,然后单击“删除 列”

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

【讨论】:

删除列后,我必须右键单击“设计”画布,然后选择Generate Change Script。然后我运行了删除列的脚本。在运行该脚本之前未删除列。 @jeppoo1 OOC 你删除列后点击保存了吗? 我没有,我不知道为什么我什至没有想到...现在我知道我可以用 CTRL+S 保存它!谢谢!【参考方案4】:

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

【讨论】:

【参考方案5】:
ALTER TABLE [Intake].[MER_SF_Opportunity_History] DROP COLUMN [[IntakeIsDeleted]]]
GO

【讨论】:

以上是关于删除 MS SQL Server 中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何为每个表计算由 SQL Server 中未指定数量的表共享的列中的不同值?

如何检索 MS-Access 中的最后一个自动增量值,例如 Sql Server 中的 @@Identity

如何在具有相同 ID 的列中选择不同的值然后删除它们 PHP SQL Server

如何从 SQL Server 读取 MS Access 数据库以更新一个或多个表列中的数据?

如何更新账单编号栏?或在 sql server 的列中按顺序排列

从 SQL Server 中的所有列中删除引号