Oracle資料庫知識點分享:truncate和delete區別

2021-03-02 twt企業IT社區

嶽彩波,擅長Oracle、Mysql,有豐富的資料庫維護、調優經驗,曾服務於金融行業,目前專注於第三方支付領域。

一、知識點簡介

Truncate和delete在實際應用中都是使用比較頻繁的,他們都是刪除表數據的語句,在這裡我們整理一下兩者之間的區別,以方便大家在應用中選擇。

二、知識點內容

1、 語句類型

Truncate屬於SQL DDL語言。

Delete屬於SQL DML語言。

2、 commit

truncate執行完成自動提交。

Delete執行完成需要手工提交。

3、 回滾

Truncate不能rollback。

Delete可以rollback。

4、 存儲空間

Truncate可以釋放存儲空間。

Delete不能釋放存儲空間。

5、 高水位

Truncate執行完畢降低高水位。

Delete不能降低高水位。

6、 日誌的產生

Truncate執行過程中產生很少的日誌。

Delete執行過程中會產生大量的日誌。

7、 回退

Truncate執行的時候很少的回退。

Delete執行的時候會有大量的回退。

8、 是否可以加條件

Truncate不能加條件刪除數據。

Delete可以加條件刪除。

9、 級聯刪除

不能truncate一個帶有enable外鍵的表,會報錯ORA-02266。

可以delete一個帶有enable外鍵的表。

10、 初始大小

Truncate保留建表的初始大小。

Delete保留表的現有大小。

三、實驗過程

以上的十條總結是根據官方文檔和平時使用過程中的一些經驗總結。

四 、權威資料

官方文檔

五、總結

Truncate table table_name;和delete table_name;

這兩個語句在使用的時候要根據具體的需求來定;

delete也可以釋放少量空間,但是不能降低高水位,上邊第四項中釋放和不釋放空間都是相對來說的。

在這裡還有一個相關的小知識點,默認情況下oracle10G的空表會分配存儲空間,oracle11G的空表不會分配空間。

點擊閱讀原文可以進入社區Oracle主題,還有更多文章、資料及相關問答。

長按二維碼關注公眾號AIX專家俱樂部

相關焦點

  • 資料庫中 truncate與delete的區別你了解多少?
    要知道truncate和delete的區別,首先我們應該知道它們是什麼 truncate [/trket/],delete [/dlit/].一。語法:(1)truncate: TRUNCATE [TABLE] tbl_name 。
  • 面試題:Mysql中drop、delete與truncate有什麼區別?
    (2) 表和索引所佔空間。當表被TRUNCATE 後,這個表和索引所佔用的空間會恢復到初始大小,而DELETE操作不會減少表或索引所佔用的空間。drop語句將表所佔用的空間全釋放掉。(3) 一般而言,drop > truncate > delete(4) 應用範圍。
  • 面試被問到SQL | delete、truncate、drop 有什麼區別?
    說到刪除表數據的關鍵字,大家記得最多的可能就是delete瞭然而我們做資料庫開發,讀取資料庫數據.對另外的兩兄弟用得就比較少了
  • delete、truncate、drop的區別有哪些,該如何選擇
    咱們常用的三種刪除方式:通過 delete、truncate、drop 關鍵字進行刪除;這三種都可以用來刪除數據,但場景不同。7、delete 操作是一行一行執行刪除的,並且同時將該行的的刪除操作日誌記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,生成的大量日誌也會佔用磁碟空間。
  • 面試官靈魂一問:MySQL 的 delete、truncate、drop 有什麼區別?
    咱們常用的三種刪除方式:通過 delete、truncate、drop 關鍵字進行刪除;這三種都可以用來刪除數據,但場景不同。7、delete 操作是一行一行執行刪除的,並且同時將該行的的刪除操作日誌記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,生成的大量日誌也會佔用磁碟空間。
  • SQL Server中DELETE和TRUNCATE的區別
    DELETE和TRUNCATE語句之間的區別是求職面試中最常見的問題之一。這兩條語句都可以從表中刪除數據。然而,也有不同之處。TRUNCATEDELETE從表中刪除所有記錄。我們不能使用WHERE刪除特定的記錄刪除所有記錄,並可以使用WHERE刪除特定記錄。
  • Oracle資料庫刪除重複數據的情況!
    【IT168 論壇採風】在對資料庫進行操作過程中我們可能會遇到這種情況,表中的數據可能重複出現,使我們對資料庫的操作過程中帶來很多的不便,那麼怎麼刪除這些重複沒有用的數據呢?
  • Oracle面試常見的二十個問題及回答
    4.解釋data block , extent 和 segment的區別(這裡建議用英文術語)  解答:data block是資料庫中最小的邏輯存儲單元。當資料庫的對象需要更多的物理存儲空間時,連續的data block就組成了extent . 一個資料庫對象擁有的所有extents被稱為該對象的segment.
  • oracle資料庫快速刪除重複記錄方式
    ROWID是數據的詳細地址,通過rowid,oracle可以快速的定位某行具體的數據的位置。ROWID可以分為物理rowid和邏輯rowid兩種。普通的表中的rowid是物理rowid,索引組織表(IOT)的rowid是邏輯rowid。
  • ​PHP處理Oracle資料庫方法與技巧(六)
    文件名:19UseOracleTransactiong.php----在PHP中使用oracle事務<!
  • Oracle資料庫開發基礎
    一、用戶和表空間1、使用系統用戶登陸Oracle系統用戶分為:sys、system、sysman、scott,前三個是安裝oracle設置的密碼,最後一個密碼默認「tiger」,這四個用戶權限從高到低排序登陸資料庫的命令:[username/password
  • 高效刪除Oracle中重複數據的方法
    【IT168 技術文章】       在對資料庫進行操作過程中我們可能會遇到這種情況,表中的數據可能重複出現,使我們對資料庫的操作過程中帶來很多的不便,那麼怎麼刪除這些重複沒有用的數據呢?
  • delete後加 limit是個好習慣麼 !
    作者:_陳哈哈https://blog.csdn.net/qq_39390545/article/details/107519747在業務場景要求高的資料庫中,對於單條刪除和更新操作,在 delete 和 update 後面加 limit 1 絕對是個好習慣。
  • Oracle資料庫面試知識點複習
    oracle一.Oracle資料庫中常用的數據類型 varchar2(長度)可變長字符串 char(數據操縱語言:insert(插入)、select(選擇)、delete(刪除)和update(更新)命令。 事務控制語言:commit(提交)、savepoint(保存點)和rollback(回滾)命令。 數據控制語言:grant(授予)和revoke(回收)。
  • delete後加 limit是個好習慣麼 ?
    ,對於單條刪除和更新操作,在 delete 和 update 後面加 limit 1 絕對是個好習慣。delete from t where sex = 1 limit 100; 你或許沒有用過,在一般場景下,我們對 delete 後是否需要加 limit 的問題很陌生,也不知有多大區別,今天帶你來了解一下,記得 mark!
  • delete後加 limit是個好習慣麼?
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫在業務場景要求高的資料庫中,對於單條刪除和更新操作,在 delete 和 update 後面加 limit 1 絕對是個好習慣。
  • 財務系統常用資料庫DML操作
    看起來跟delete很像,但是重新插入數據會發現,他的自增主鍵會重新從1開始,但是delete的是直接在原來的所以自增值之後往上加。看下面id欄位。那 truncate 和 delete有什麼區別呢?我們來梳理下。
  • delete後加 limit是個好習慣麼
    ,對於單條刪除和更新操作,在delete和update後面加limit 1絕對是個好習慣。delete from t where sex = 1 limit 100; 你或許沒有用過,在一般場景下,我們對 delete 後是否需要加 limit 的問題很陌生,也不知有多大區別,今天帶你來了解一下,記得mark!
  • 分享一個有意思的oracle19c資料庫監聽異常
    來自:波波說運維概述今天主要分享一個最近排查的監聽問題,還是有點意思的,一起來看看吧~環境:oracle19c 單實例用plsql連接提示,這裡排除防火牆、帳號密碼問題,連接字符串按監聽文件格式寫2、查看資料庫狀態資料庫狀態正常
  • 不懂就問:delete 後加 limit 是個好習慣麼 ?
    https://chensj.blog.csdn.net/在業務場景要求高的資料庫中,對於單條刪除和更新操作,在 delete 和 update 後面加 limit 1 絕對是個好習慣。delete from t where sex = 1 limit 100; 你或許沒有用過,在一般場景下,我們對 delete 後是否需要加 limit 的問題很陌生,也不知有多大區別,今天帶你來了解一下,記得 mark!