2009-04-16 60 views
36

如何從現有表中刪除列?刪除MS SQL Server中的列

+0

的可能重複(HTTP [如何刪除從現有的表的列?]://計算器。com/questions/5626344/how-to-remove-a-column-from-an-existing-table) – 2014-02-07 16:20:45

回答

82

你要找的命令是:

alter table tblName drop column columnName 

其中tblName是表的名稱和columnName是列名,但有可能需要幾件事情先做。

  • 如果對該列有任何外鍵引用,則需要先刪除它們。
  • 如果存在使用該列的索引,則需要刪除該列或將其調整爲不使用該列。

請記住,這個命令的性能不一定是好的。一種選擇是等待的時候,你可以肯定沒有人會來訪問數據庫中的停機時間段,重新命名當前的表,然後使用create tableinsert into ... select from轉移你不想刪除列。

一個甲骨文的更高版本的實際上有一個軟刪除這正好可以標誌着列作爲未使用的無需物理刪除。它具有相同的效果,因爲你不能再引用它,並且沿着alter table ... drop unused columns這條線有一條命令,它意味着要在安靜的時間運行,這實際上是在實際上將其刪除。

這樣做的優點是不需在繁忙的時候拖累數據庫性能立即「消失」的列。

11

ALTER TABLE XXX DROP COLUMN YYY;

3

對於大表這可能是非常慢。創建一個新的表格,舊的表格的複製品,但更改並插入數據通常會快很多。刪除舊錶,然後重命名新表。

2

這也可以通過SSMS GUI完成。

我喜歡這種方法,因爲它提醒你,如果有該列的任何關係,也可以自動刪除那些爲好。正如PaxDiablo所述,如果有關係,必須先刪除它們。在設計視圖

  1. 穿戴錶(右鍵點擊表)像這樣:

enter image description here

  • 右擊列在表的設計視圖中並點擊「刪除 列」
  • enter image description here

    此時,如果有任何關係也需要刪除,它會詢問您是否要刪除這些關係。