如何从现有表中删除列?
答案 0 :(得分:93)
您正在寻找的命令是:
alter table tblName drop column columnName
其中tblName
是表格的名称,columnName
是列的名称,但您可能需要先做一些事情。
请记住,此命令的性能可能不一定好。一个选项是等待停机时间,当您可以确定没有人将访问数据库,重命名当前表,然后使用create table
和insert into ... select from
来传输您不想要的列我想要删除。
Oracle的后续版本之一实际上有一个软删除,它可以将列标记为未使用而不将其物理删除。它具有相同的效果,因为你不能再引用它,并且有alter table ... drop unused columns
的命令,它意味着在安静的时间运行,这实际上是在物理上移除它的艰苦工作。
这样做的好处是可以立即“消失”列,而不会在繁忙时间拖拽数据库性能。
答案 1 :(得分:13)
ALTER TABLE XXX DROP COLUMN YYY;
答案 2 :(得分:3)
对于大型表格,这可能非常慢。创建一个新表,旧表的副本,但更改,并插入数据通常要快得多。删除旧表,然后重命名新表。
答案 3 :(得分:2)
这也可以通过SSMS GUI完成。
我喜欢这种方法,因为它会警告你,如果该列上有任何关系,也可以自动删除它们。正如PaxDiablo所说,如果存在关系,则必须先删除它们。
答案 4 :(得分:0)
ALTER TABLE [Intake].[MER_SF_Opportunity_History] DROP COLUMN [[IntakeIsDeleted]]]
GO