2010-03-16 171 views

回答

24

Difference between DELETE and DROP commands

刪除: DELETE命令用於 從表中刪除行。 WHERE 子句可用於僅刪除一些 行。如果沒有指定的條件是 ,則所有行都將被刪除。 執行DELETE操作 後,您需要COMMIT或ROLLBACK 交易以使更改 永久或撤銷它。請注意, 此操作將導致觸發表上的所有DELETE 觸發器。

丟棄: DROP命令從數據庫中刪除表 。所有表格' 行,索引和特權也將被刪除, 。沒有DML觸發器將被解僱。該操作不能回滾 。

+10

當您從其他來源複製粘貼時請給予功勞! http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands – BlitzKrieg 2010-03-16 06:56:31

3

簡單地說:一個DELETE命令刪除匹配的行,DROP命令刪除整個表。

+0

或多行。 – Thilo 2010-03-16 06:43:05

+1

更好的是,所有匹配的行。 – animuson 2010-03-16 06:43:39

+0

當然,編輯答案。 – gpmcadam 2010-03-16 06:45:37

0

DROP從目錄中刪除整個表和關聯的對象,要求您從頭創建所有索引和約束。

2

刪除刪除內容並刪除數據庫的結構。

1

假設你正在使用MS SQL 然後,如果你想刪除整個Table那麼你可以使用:

DROP TABLE MyTable的

這會刪除整個表及其約束

要刪除您要使用的任何特定行:

從MyTable中刪除其中id = 5

這會刪除id爲5的行 如果沒有條件匹配,它會刪除所有行

0

放入物理刪除的函數,並刪除特定的表或列。表結構remails相同。如果你想看結構,你可以寫這個 desc表名;刪除表後結構相同。 刪除函數永久刪除表或列,表的結構也。

2

刪除刪除表格的內容。 刪除刪除表格的內容和結構。刪除可以回滾,但不能回滾

2

刪除

  • 刪除刪除數據只,表結構保持不變。
  • 這是一個DML語句
  • 回滾可能
  • 沒有提交既不是之前也不之後進行。 (因爲它是一個DML聲明)。
  • 他們採取的行鎖,
  • 他們產生重做(它的地段)
  • 他們需要在UNDO表空間段。
  • 刪除不會放棄段空間,因此刪除所有記錄的表將保留其所有原始塊。
  • 它可以激活觸發器。

掉落

  • 掉落永久刪除兩個數據以及表結構。
  • 這是一個DDL語句
  • 回滾不可能
  • 它發出COMMIT它的行爲和其他凱明後來所以沒有交易的回滾可能之前。 (因爲它是DDL語句)
  • 沒有行級鎖。
  • 不生成重做或回滾。
  • 它們不需要UNDO表空間中的段。
  • 從表格中取消初始分配的所有範圍
  • 它不激活觸發器。
0

我知道這是一箇舊帖子,但我一直在尋找答案,因爲我相信OP已經詢問刪除或刪除數據庫,而不是表格或內容,我以爲我會芯片in。

兩者都將刪除數據庫,但如果要完全則都可能涉及多個步驟刪除數據庫和關聯的工件。

DELETE

如果使用SQL Server Management Studio中,您可以刪除數據庫上右擊數據庫並選擇刪除。在出現的對話框提供了幾個複選框:

  1. 「刪除備份和還原歷史記錄信息數據庫」
  2. 「關閉現有連接」

如果不勾選「刪除備份和恢復歷史..「,那些文件將保留在服務器上,除非你手動刪除它們。 「關閉現有連接」是一個好主意,否則你可能會得到一個錯誤,告訴你的數據庫仍在使用(即使它只是你,而你試圖刪除)

DROP

單獨的SQL命令'DROP'不會刪除所有內容。您仍然需要刪除備份歷史記錄,並將數據庫設置爲「單用戶模式」 - 否則它可能會抱怨數據庫仍在使用中,如上所述。

--Remove backup history 
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'YourDBName' 
GO 
USE [master] 
GO 
--close all the open connections to your database 
ALTER DATABASE [YourDBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
USE [master] 
GO 
--remove the actual database 
DROP DATABASE [YourDBName] 
GO