關於sql 中delete, truncate,drop的理解與總結

来源:https://www.cnblogs.com/Yogurt-harry/archive/2019/07/05/11140002.html
-Advertisement-
Play Games

關於文章,本文是在網上查找資料整理而來,方便以後記憶 delete 命令刪除的數據可以恢復, truncate 命令刪除的數據是不可以恢復的,全刪的那種 drop 命令刪除的數據不可恢復,連表結構都刪的那種 相同點 truncate 和不帶 where 子句的 delete, 以及 drop 都會刪 ...


關於文章,本文是在網上查找資料整理而來,方便以後記憶

 

delete 命令刪除的數據可以恢復,

truncate 命令刪除的數據是不可以恢復的,全刪的那種

drop 命令刪除的數據不可恢復,連表結構都刪的那種

 

相同點

truncate 和不帶 where 子句的 delete, 以及 drop 都會刪除表內的數據。

不同點:

1. truncate 和 delete 只刪除數據不刪除表的結構,drop 語句將刪除表的結構被依賴的約束(constrain), 觸發器(trigger), 索引(index); 依賴於該表的存儲過程/函數將保留, 但是變為 invalid 狀態。

2.delete 語句是 dml, 這個操作會放到 rollback segement 中, 事務提交之後才生效; 如果有相應的 trigger, 執行的時候將被觸發。 truncate, drop 是 ddl, 操作立即生效, 原數據不放到 rollback segment 中, 不能回滾。 操作不觸發 trigger。

3.delete 語句不影響表所占用的 extent, 高水線(high watermark)保持原位置不動。 顯然 drop 語句將表所占用的空間全部釋放 。 truncate 語句預設情況下見空間釋放到 minextents 個 extent, 除非使用 reuse storage; truncate會將高水線複位(回到最開始)。

4.速度:一般來說: drop > truncate > delete 。

5.安全性: 小心使用 drop 和 truncate, 尤其沒有備份的時候。否則哭都來不及。

使用上, 想刪除部分數據行用 delete, 註意帶上 where 子句。 回滾段要足夠大。

想刪除表, 當然用 drop。

想保留表而將所有數據刪除。如果和事務無關, 用 truncate 即可。 如果和事務有關, 或者想觸發 trigger, 還是用 delete。

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 下載並導入key文件 wget -O - https://archive.kali.org/archive-key.asc |apt-key add 顯示ok表示成功導入key,然後再進行之後的其他步驟。 如果在執行以上指令時出現錯誤提示,則可以更換成以下指令重新執行,大幾率可以成功。 wget - ...
  • 第一篇blog,linux中文輸入出現編碼 Vi,I love u ...
  • 1、背景介紹 工作當中經常會遇到需要對新來的伺服器進行安裝系統,在安裝系統的時候需要對磁碟進行分區、格式化。往往伺服器磁碟都是2塊SSD+12塊SATA硬碟,在對如此之多的磁碟進行分區和格式化,真是個體力活。甚至還有許多伺服器的USB插口不夠用,滑鼠和鍵盤不能同時用,而且身邊又沒有一個USBhub, ...
  • 一、為什麼很多人會選擇禁用Win10自動更新? 1.win10自動更新定義: Win 10的自動更新功能,即 Windows Update。這項功能本意是為一些軟體、漏洞等提供更新服務。一般來說,只要電腦連接上無線網,在想要更新一些東西的時候,電腦便會啟動自動更新。 2.win10自動更新帶來的問題 ...
  • 首先在另外一臺聯網電腦拉取最新的redis,zookeeper,kafka鏡像 然後導出鏡像為tar文件 導入鏡像到生產伺服器 腳本總已經寫了。複製到.sh文件中執行即可。 redis的配置和數據已經掛到宿主機了。另外兩個沒有。 !/bin/bash set x input images 這裡要準備 ...
  • Ubuntu 18.04 桌面版linux系統安裝vim編輯器。 ...
  • Kafka集群安裝主節點h201,從節點h202、h2031.安裝jdk1.8[hadoop@h201 ~]$ /usr/jdk1.8.0_144/bin/java -version 2.安裝zookeeperkafka集群需要 zookeeper支持[hadoop@h201 ~]$ tar -zx ...
  • imp 導入;exp 導出 imp(exp) system/123456 file="D:\LocalDatabase.dmp" full=y; ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...