删除 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 table
和insert 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 数据库以更新一个或多个表列中的数据?