sql刪除資料表及表記錄

2021-06-22 15:12:58 字數 921 閱讀 4344

truncate table 在功能上與不帶 where 子句的 delete 語句相同:二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。

delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。truncate table 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。

truncate table 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 delete。如果要刪除表定義及其資料,請使用 drop table 語句。

對於由 foreign key 約束引用的表,不能使用 truncate table,而應使用不帶 where 子句的 delete 語句。由於 truncate table 不記錄在日誌中,所以它不能啟用觸發器。

truncate table 不能用於參與了索引檢視的表。

對用truncate table刪除資料的表上增加資料時,要使用update statistics來維護索引資訊。

如果有rollback語句,delete操作將被撤銷,但truncate不會撤銷。

delete  是有條件的刪除表中的資料,如果不寫條件,全表刪除,而刪除後,表仍然存在,仍可以對錶進行操作。具體語法為delete from table where 條件。

同樣,還有乙個truncate table tablename語句,是全表不提交刪除,也是刪除資料,表仍然存在。

drop table,是從資料庫中刪除表。刪除後,表結構不在存在,無法再對該錶進行任何操作。

舉個通俗的例子,比如你有乙個水桶,桶裡裝著水。

而delete或者truncate,只是相當於把水倒掉,而桶仍然存在。

而drop table,則相當於把桶都扔掉了。

oracle多表關聯刪除資料表記錄方法

oracle多表關聯刪除的兩種方法 第一種使用exists方法 delete from tablea where exits select 1 from tableb where tablea.id tableb.id 第二種使用匿名表方式進行刪除delete from select 1 from ...

oracle多表關聯刪除資料表記錄方法

oracle多表關聯刪除的兩種方法 第一種使用exists方法 delete from tablea where exits select 1 from tableb where tablea.id tableb.id 第二種使用匿名表方式進行刪除 delete from select 1 from...

MySQL 資料表操作 刪除資料表中的記錄

刪除資料記錄是資料操作中常見的操作,可以刪除表中已經存在的資料記錄。在mysql中可以通過delete語句來刪除資料記錄,該sql語句可以通過以下幾種方式使用 刪除特定資料記錄 刪除所有資料記錄。刪除特定資料記錄 在mysql中刪除特定資料記錄可通過sql語句delete來實現,其語法形式如下 de...