1. 程式人生 > >Oracle資料庫中truncate命令和delete命令的區別

Oracle資料庫中truncate命令和delete命令的區別

首先講一下,truncate命令:
語法:TRUNCATE  TABLE  table;
表格裡的資料被清空,儲存空間被釋放。
執行後會自動提交,包括之前其它未提交的會話,因而一旦清空無法回退。
只有表格的建立者或者其他擁有刪除任意表格許可權的使用者(如DBA)才能清空表格。
TRUNCATE  TABLE  dept30;
Table truncated.

下面講一下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 TABLE (schema)table_name DROP(REUSE) STORAGE 在預設是 DROP STORAGE 當使用DROP STORAGE時將縮短表和表索引,將表收縮到最小範圍,並重新設定NEXT引數。REUSE STORAGE不會縮短表或者調整NEXT引數在特殊情況下使用 REUSE ST

DELETE語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。
TRUNCATE TABLE 則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。

TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。
如果想保留標識計數值,請改用 DELETE。
如果要刪除表定義及其資料,請使用 DROP TABLE 語句。

以上只是介紹一下兩個命令的用法,下面說一下我的推薦用法,truncate命令速度快,佔用資源少,如果你能確定當前表裡的資料完全沒有用的話可以使用此命令,方面快捷,如果資料或許有用,那你最好做好備份,否則一旦使用此命令,就悔不當初了,當然delete命令還是有好處的,如果不能保證此後的資料有不有用,但是當前不知道,或者乾脆就是誤刪了,那麼使用rollback命令直接回滾,當然rollback命令可以添加回滾點,定位回滾,恢復資料比較方便,所以說對與初學者,樓主強烈建議大家刪除資料時使用delete命令,麻煩事麻煩了點,但是保險一點,這是我的教訓啊,誤用truncate命令清空了一個表,還好這個表是無關緊要的,否則我就只有以謝天下了。當然,非常強烈的建議是,做任何操作前,對於有用的資料都要事先備份,不管用不用得著,有備無患。


相關推薦

oracle資料庫使用impexp命令

最近幾天由於專案需要搭建新的開發環境,需要處理資料。本來是很簡單的事情,但是由於資料庫需要使用線上環境的資料,變得有些麻煩,主要是以前一些資料庫的處理都是小資料量,一個命令很短就執行完畢了,而這次資料庫檔案在200G左右,資料備份和恢復,以及備份檔案的轉移都成了問題,因為檔案

SQLtruncate tabledelete區別

約束 重置 mar 功能 語句 str foreign ack span TRUNCATE TABLE 在功能上與不帶 Where 子句的 Delete 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 Delete 速度快,且使用的系統和事務日誌資源

Oracle資料庫truncate命令delete命令區別

首先講一下,truncate命令: 語法:TRUNCATE  TABLE  table; 表格裡的資料被清空,儲存空間被釋放。 執行後會自動提交,包括之前其它未提交的會話,因而一旦清空無法回退。 只有表格的建立者或者其他擁有刪除任意表格許可權的使用者(如DBA)才能清空表格。 TRUNCATE  TABL

日期型別的資料在Oracle資料庫的儲存查詢

使用Oracle資料庫,mybatis的對映檔案中日期型別的資料,如果定義為<result column =“UPDATED_DATE" jdbcType =“DATE” property =“updatedDate”/>,即使在後臺你為日期賦予年月日時分秒,但儲存到資料庫中將只

oracle資料庫truncate表後如何快速恢復

      在生產中,極有可能遇到不小心truncate表的情況,truncate表後不會產生日誌記錄和回滾段空間的使用,不能用閃回恢復。尤其是在沒有任何備份的情況下所以恢復起來相當麻煩,雖然在有備份

Oracle資料庫資料操作事務控制以及鎖

表資料的操作(DML):     插入:     修改:     刪除:     合併:大資料操作的時候,資料倉庫      插入:使用values只能插入一行資料     插入空值:         1)不寫         2)插入空串         3)null

Oracle資料庫關於日期時間欄位型別

Oracle資料庫 與日期有關的有三種類型:date,timestamp與interval。DATE和TIMESTAMP型別儲存精度可變的固定日期/時間,二者區別是,後者秒可以精確到小數,另外還可以有時區之分。。INTERVAL型別可以很容易地儲存一個時間量,如“8個小

Oracle資料庫的ROWNUMORDER BY執行順序

使用SQL查詢Oracle表資料的時候,可能會有如下兩種結果需求。 對查詢結果集排序,並獲得其排序前的行號 對結果集排序後,為每一行加入行號 對於上述兩種結果需求,編寫SQL語句的時候,需要注意ROWNUM賦值和ORDER BY的執行順序。   如果ORDERBY

Oracle資料庫備份,expexpdp的區別,impimpdp的區別

oracle資料庫備份 1: 建立dmp匯出目錄  create directory 目錄名 as '目錄路徑' 2: 檢視當前建立的所有dmp匯出目錄 select * from dba_directories 3: 備份 expdp 使用者名

DROP TABLE、TRUNCATE TABLEDELETE區別

相同點 TRUNCATE TABLE和DELETE都可以刪除整個資料庫表的記錄 不同點 DELETE DML語言 可以回退 可以有條件的刪除DELETE FROM 表名 WHERE 條件 TRUNCATE TABLE DDL語言 無法回退 預設

Oracle資料庫commitrollback命令

一個數據庫事務起始於一個SQL語句,中止於以下4種事件之一: COMMIT或ROLLBACK語句 DDL/DCL隱式提交 使用者退出時自動提交 系統強行關閉時取消事務 事務結束後,下一條SQL語句將開始一個新的事務。 語句 功能 COMMIT 結束當前事務,並將所有資

對比Oracletruncatedelete區別及效能

可見delete刪除表還可以回滾,而truncate截斷表就不能回滾了.(前提是delete操作沒有提交) 2.高水線 所有的Oracle表都有一個容納資料的上限(很象一個水庫歷史最高的水位),我們把這個上限稱為“high water mark”或HWM。這個HWM是一個標記(專門有一個數據塊用來記錄高水標記

資料庫truncatedelete的差別聯絡?

聯絡:兩者都可以刪除一個表中的資料 區別: 是一個數據定義語言,會被隱式地提交,一旦執行不能夠回滾。delete是每一次刪除一行資料,同時將刪除的操作以日誌的形式進行儲存,從而可以進行回滾操作。 de

介紹hadoop的hadoophdfs命令

命令行 註意 property 密碼 編輯 format gety node job 有些hive安裝文檔提到了hdfs dfs -mkdir ,也就是說hdfs也是可以用的,但在2.8.0中已經不那麽處理了,之所以還可以使用,是為了向下兼容. 本文簡要介紹一下有關的命令,

Linux的rzsz命令

linux rz szrz和sz是Linux/Unix同Windows進行Zmodem文件傳輸的命令工具,都使用Zmodem文件傳輸協議。rz:receive zmodem的縮寫sz:send zmodem的縮寫sz:將選定的文件發送(send)到本地服務器,即從Linux下載到Windows系統;rz:運

sqldrop、truncatedelete區別

for tro ger view valid 保持 size 引用 gen SQL truncate 、delete與drop區別 相同點: 1.truncate和不帶where子句的delete、以及drop都會刪除表內的數據。 2.drop、truncate都是DD

【轉載】Oracle sqlplus最簡單的一些命令,設置顯示的格式

rac mysql gpo acl 命令格式 lines 屬性 log sql 登錄數據庫:方式(1)當我們剛安裝Oracle數據庫時,登錄賬戶時可以使用win+r 輸入sqlplus,進入sqlplus命令窗口,然後輸入用戶名和密碼,這裏輸入密碼時不會有回顯 方式(2)

在XShell使用szrz命令下載上傳文件

本地文件 list baidu target edi 目錄 文件 rap aud 借助XShell,使用linux命令sz可以很方便的將服務器上的文件下載到本地,使用rz命令則是把本地文件上傳到服務器 工具/原料 XShell CentOS

第十六章 在文件搜索文本工具:grep命令 egrep命令

oot his a-z 多個 查找 sea 內容 args lar 第十六章 在文件中搜索文本工具:grep命令 和egrep命令 名詞解釋 grep(global search regular expression(RE)and print out the line,全面

Memcached delete命令flush_all命令的用法

emc delete命令 val mem 用法 key memcached 設置 .com Memcached設置了變量key怎麽刪除或者清除呢,delete命令和flush_all 命的用法。 1,delete 命令的基本語法 delet