1 DELETE和TRUNCATE有什麼區別,分別寫例子

2022-03-12 02:38:56 字數 5892 閱讀 6182

1樓:匿名使用者

delete from aa

truncate table aa

區別1。delete from後面可以寫條件,truncate不可以

2。delete from記錄是一條條刪的,所刪除的每行記錄都會進日誌,而truncate一次性刪掉整個頁,因此日至裡面只記錄頁釋放,簡言之,delete from更新日誌,truncate基本不,所用的事務日誌空間較少

3。delete from刪空表後,會保留一個空的頁,truncate在表中不會留有任何頁

4。當使用行鎖執行 delete 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。

5。如果有identity產生的自增id列,delete from後仍然從上次的數開始增加,即種子不變,而truncate後,種子會恢復初始

6。truncate不會觸發delete的觸發器,因為truncate操作不記錄各個行刪除

這個答案挺好 採納給他吧 我頂他!

2樓:王木木

假如表名為aa。

則:delete from aa

truncate table aa

他們都是刪除表的內容。

這兩個的區別是:delete需要提交,truncate不需要提交操作。

truncate和delete之間有什麼區別

3樓:黑皮小粽子

1、表和索引所佔空間。當表被truncate 後,這個表和索引所佔用的空間會恢復到初始大小,delete操作不會減少表或索引所佔用的空間。

2、應用範圍。truncate 只能對table;delete可以是table和view。

3、truncate 和delete只刪除資料, drop則刪除整個表(結構和資料)。

4、delete語句為dml(data maintain language),這個操作會被放到 rollback segment中,事務提交後才生效。如果有相應的 tigger,執行的時候將被觸發。truncate是dll(data define language),操作立即生效,原資料不放到 rollback segment中,不能回滾。

5、在沒有備份情況下,謹慎使用 truncate。要刪除部分資料行採用delete且注意結合where來約束影響範圍。回滾段要足夠大。

若想保留表而將表中資料刪除,如果於事務無關,用truncate即可實現。如果和事務有關,或老是想觸發trigger,還是用delete。

6、truncate table 表名 速度快,而且效率高,因為:

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

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

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

8、總結:

在使用truncate時一定要注意,雖然可以恢復,但為了減少麻煩,還是要慎重。

如果想刪除部分資料用delete,注意帶上where子句,回滾段要足夠大;

如果想保留表而將所有資料刪除,如果和事務無關,用truncate即可;

如果和事務有關,或者想觸發trigger,還是用delete;

如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新匯入/插入資料。

4樓:匿名使用者

1、delete是dml,執行delete操作時,每次從表中刪除一行,並且同時將該行的的刪除操作記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,但要注意表空間要足夠大,需要手動提交(commit)操作才能生效,可以通過rollback撤消操作。

2、delete可根據條件刪除表中滿足條件的資料,如果不指定where子句,那麼刪除表中所有記錄。

3、delete語句不影響表所佔用的extent,高水線(high watermark)保持原位置不變。

4、truncate是ddl,會隱式提交,所以,不能回滾,不會觸發觸發器。

5、truncate會刪除表中所有記錄,並且將重新設定高水線和所有的索引,預設情況下將空間釋放到minextents個extent,除非使用reuse storage,。不會記錄日誌,所以執行速度很快,但不能通過rollback撤消操作(如果一不小心把一個表truncate掉,也是可以恢復的,只是不能通過rollback來恢復)。

6、對於外來鍵(foreignkey )約束引用的表,不能使用 truncate table,而應使用不帶 where 子句的 delete 語句。

7、truncatetable不能用於參與了索引檢視的表。

5樓:靑龍乚夽

1、在功能上,truncate是清空一個表的內容,它相當於delete from table_name。

2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個表的資料時,會產生大量的roolback,佔用很多的rollback segments, 而truncate不會。

4、truncate 調整high water mark 而delete不;truncate之後,table的hwm退回到 initial和next的位置(預設)delete 則不可以。

5、truncate 只能對table,delete 可以是table,view,synonym。

6、truncate table 的物件必須是本模式下的,或者有drop any table的許可權 而 delete 則是物件必須是本模式下的,或被授予 delete on schema.table 或delete any table的許可權。

7、在外層中,truncate或者delete後,其佔用的空間都將釋放。

8、truncate和delete只刪除資料,而drop則刪除整個表(結構和資料)。

擴充套件資料

oracle database,又名oracle rdbms,或簡稱oracle。是甲骨文公司的一款關聯式資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。

可以說oracle資料庫系統是目前世界上流行的關聯式資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的資料庫解決方案。

6樓:axure夜話

truncate是截斷的意思,使用truncate刪除的資料是不操作日誌的,資料不可恢復的。

delete是刪除的意思,使用delete刪除的資料寫入日誌,是可以通過日誌恢復的。

7樓:匿名使用者

簡單的說:

truncate刪除表比較快,但刪除的資料不能恢復,只能刪除表中的所有資料

而delete刪除比truncate慢,刪除的資料可以恢復,後面可以跟where條件刪除某些指定記錄。

8樓:匿名使用者

前者不可rollback

後者可以rollback

9樓:永遠喜歡漫遊

1. delete逐條刪除,truncate先摧毀 再重建2. **** delete是dml(可以回滾);truncate是ddl(不可以回滾)

3. delete不會釋放空間;truncate會4. delete會產生碎片,truncate不會5. delete 可以閃回 truncate不可以

10樓:鍾瑪

個人感覺是沒有多大的區別的,你是說這兩個單詞的意思嗎?

11樓:♂凡鳥

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

delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。

truncate table 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。

truncate,delete,drop放在一起比較:

truncate table:刪除內容、釋放空間但不刪除定義。

delete table:刪除內容不刪除定義,不釋放空間。

drop table:刪除內容和定義,釋放空間。

delete,truncate,drop,這三者的詳細區別是什麼,請詳細指教,謝謝。

12樓:匿名使用者

delete 和truncate 都可以用來刪除資料表裡的資料。delete可以精確刪除。如刪除 學生表(student)裡id為5的記錄。

可以寫為 delete from studen where id ='5' 。刪除表裡面的所有資料,可以寫為

delete from studnet 或者 truncate table student 。後者對日誌的記錄要少。drop 比較簡單,是用來刪除表的 如 drop table student 。

drop是將表及其裡面的資料 全部刪除

delete 與 truncate 有什麼不同?

13樓:匿名使用者

truncate和delete有以下幾點區別

1、truncate在各種表上無論是大的還是小的都非常快。如果有rollback命令delete將被撤銷,而truncate則不會被撤銷。

2、truncate是一個ddl語言,向其他所有的ddl語言一樣,他將被隱式提交,不能對truncate使用rollback命令。

3、truncate將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過truncate操作後的表比delete操作後的表要快得多。

4、truncate不能觸發任何delete觸發器。

5、不能授予任何人清空他人的表的許可權。

6、當表被清空後表和表的索引講重新設定成初始大小,而delete則不能。

7、不能清空父表。

求答案:truncate和delete命令有何區別?

14樓:文件類共創空間

1、truncate在各種表上無論是大的還是小的都非常快。如果有rollback命令delete將被撤銷,而truncate則不會被撤銷。

2、truncate是一個ddl語言,向其他所有的ddl語言一樣,他將被隱式提交,不能對truncate使用rollback命令。

3、truncate將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過truncate操作後的表比delete操作後的表要快得多。

4、truncate不能觸發任何delete觸發器。

5、不能授予任何人清空他人的表的許可權。

6、當表被清空後表和表的索引將重新設定成初始大小,而delete則不能。

7、不能清空父表。

truncate table (schema)table_name

drop(reuse) storage 在預設是 drop storage 當使用drop storage時將縮短表和表索引,將表收縮到最小範圍,並重新設定next引數。reuse storage不會縮短表或者調整next引數在特殊情況下使用 reuse st

delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。

truncate table 則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。

小米1和1s主機板圖,小米1和1s的主機板一樣嗎

小米手機1s有前置攝像頭,小米手機1沒有。小米1和1s的主機板一樣嗎 嗨!不一樣的 更詳細的描述問題有助於理解你遇到的麻煩,幫助你更準確的解決問題。謝謝你支援小米手機!小米1s主機板漏電 10 嗨!1 baiimei碼是不可以鑑別真偽的du2 你不是在小米網zhi 買的,沒有發票dao是不予保回修的...

男1和女1離婚了有個小孩,然後男1和女2結婚了,又生了,然後他們也離婚了,女2和男2結婚了,又

男2女3的孩子和女3男3的孩子是同母異父 男人離婚了有一個女兒給前妻,然後又和一個大姑娘結婚了生一個兒子,這樣有獨生子女費嗎 他們領取了 獨生子女光榮證 就可以領取獨生子女費,否則是不能領取的。目前普遍兩孩政策的落實,已經不再辦理獨生子女證。應該是有,但現在放開二胎,還有獨生費嗎?嫁給一個離婚已有2...

無冬之夜1和2哪個好玩,無冬之夜1和暗黑破壞神2哪個好玩?

其實沒什麼可比的 一二區別挺大的 我覺得都有意思 玩過一的都不習慣二 因為二操作偏向博得之門系列 冰風谷系列 異域鎮魂曲等的系統 但又不一樣,二代感覺想把一代和這些系列揉一起 結果操作的我特別蛋疼 二代種族亞種眾多 職業更多 職業選擇的兼職數量也提升了一 職業的發展選擇就讓人陶醉.雖然一代有prc擴...