0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL數(shù)據(jù)庫(kù):drop、truncate和delete的區(qū)別

如意 ? 來(lái)源:CSDN ? 作者:海盜船長(zhǎng)沒有船 ? 2020-08-19 17:22 ? 次閱讀

一、delete

delete是DML(data maintain Language,這個(gè)操作會(huì)被放到 rollback segment中,事務(wù)提交后才生效),執(zhí)行delete操作時(shí),每次從表中刪除一行,并且同時(shí)將該行的的刪除操作記錄在redo和undo表空間中以便進(jìn)行回滾(rollback)和重做操作,但要注意表空間要足夠大,需要手動(dòng)提交(commit)操作才能生效,可以通過(guò)rollback撤消操作。

delete可根據(jù)條件刪除表中滿足條件的數(shù)據(jù),如果不指定where子句,那么刪除表中所有記錄。

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

二、truncate

truncate是DDL,會(huì)隱式提交,所以,不能回滾,不會(huì)觸發(fā)觸發(fā)器。

truncate會(huì)刪除表中所有記錄,并且將重新設(shè)置高水線和所有的索引,缺省情況下將空間釋放到minextents個(gè)extent,除非使用reuse storage。不會(huì)記錄日志,所以執(zhí)行速度很快,但不能通過(guò)rollback撤消操作(如果一不小心把一個(gè)表truncate掉,也是可以恢復(fù)的,只是不能通過(guò)rollback來(lái)恢復(fù))。

對(duì)于外鍵(foreignkey )約束引用的表,不能使用 truncate table,而應(yīng)使用不帶 where 子句的 delete 語(yǔ)句。

truncatetable不能用于參與了索引視圖的表。

三、drop

drop是DDL,會(huì)隱式提交,所以,不能回滾,不會(huì)觸發(fā)觸發(fā)器。

drop語(yǔ)句刪除表結(jié)構(gòu)及所有數(shù)據(jù),并將表所占用的空間全部釋放。

drop語(yǔ)句將刪除表的結(jié)構(gòu)所依賴的約束,觸發(fā)器,索引,依賴于該表的存儲(chǔ)過(guò)程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài)。

總結(jié):

1、在速度上,一般來(lái)說(shuō),drop》 truncate 》 delete。

2、在使用drop和truncate時(shí)一定要注意,雖然可以恢復(fù),但為了減少麻煩,還是要慎用。

3、如果想刪除部分?jǐn)?shù)據(jù)用delete,注意帶上where子句,回滾段要足夠大;

如果想刪除表,當(dāng)然用drop;

如果想保留表而將所有數(shù)據(jù)刪除,如果和事務(wù)無(wú)關(guān),用truncate即可;

如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete;

如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入/插入數(shù)據(jù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3839

    瀏覽量

    64542
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2000

    瀏覽量

    61255
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    819

    瀏覽量

    26649
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MySQL數(shù)據(jù)庫(kù)的安裝

    MySQL數(shù)據(jù)庫(kù)的安裝 【一】各種數(shù)據(jù)庫(kù)的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的頭像 發(fā)表于 01-14 11:25 ?66次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>的安裝

    關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型區(qū)別

    關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)在多個(gè)方面存在顯著差異,主機(jī)推薦小編為您整理發(fā)布關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型區(qū)別,以下是它們的主要區(qū)別。
    的頭像 發(fā)表于 01-10 09:58 ?86次閱讀

    構(gòu)建數(shù)據(jù)庫(kù)解決方案,基于華為云 Flexus X 實(shí)例容器化 MySQL 主從同步架構(gòu)

    前言**** 華為云 Flexus X 實(shí)例,融合柔性算力與智能調(diào)度,為數(shù)據(jù)庫(kù)解決方案帶來(lái)全新突破。采用容器化 MySQL 主從同步架構(gòu),實(shí)現(xiàn)數(shù)據(jù)高效備份與讀寫分離,保障業(yè)務(wù)連續(xù)性與數(shù)據(jù)
    的頭像 發(fā)表于 01-07 17:22 ?149次閱讀
    構(gòu)建<b class='flag-5'>數(shù)據(jù)庫(kù)</b>解決方案,基于華為云 Flexus X 實(shí)例容器化 <b class='flag-5'>MySQL</b> 主從同步架構(gòu)

    數(shù)據(jù)庫(kù)是哪種數(shù)據(jù)庫(kù)類型?

    數(shù)據(jù)庫(kù)是一種部署在虛擬計(jì)算環(huán)境中的數(shù)據(jù)庫(kù),它融合了云計(jì)算的彈性和可擴(kuò)展性,為用戶提供高效、靈活的數(shù)據(jù)庫(kù)服務(wù)。云數(shù)據(jù)庫(kù)主要分為兩大類:關(guān)系型數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 01-07 10:22 ?102次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程

    Mysql數(shù)據(jù)庫(kù)故障: Mysql數(shù)據(jù)庫(kù)表記錄丟失。 Mysql數(shù)據(jù)庫(kù)故障表現(xiàn): 1、
    的頭像 發(fā)表于 12-16 11:05 ?188次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)流程

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MYSQL數(shù)據(jù)庫(kù)ibdata1文件損壞的數(shù)據(jù)恢復(fù)案例

    mysql數(shù)據(jù)庫(kù)故障: mysql數(shù)據(jù)庫(kù)文件ibdata1、MYI、MYD損壞。 故障表現(xiàn):1、數(shù)據(jù)庫(kù)無(wú)法進(jìn)行查詢等操作;2、使用my
    的頭像 發(fā)表于 12-09 11:05 ?192次閱讀

    香港云服務(wù)器怎么部署MySQL數(shù)據(jù)庫(kù)?

    在香港云服務(wù)器上部署MySQL數(shù)據(jù)庫(kù)的步驟如下: 步驟 1: 更新軟件包列表 首先,確保軟件包列表是最新的。在終端中執(zhí)行以下命令: sudo apt update 步驟 2: 安裝 MySQL
    的頭像 發(fā)表于 11-14 16:15 ?201次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—通過(guò)拼接數(shù)據(jù)庫(kù)碎片恢復(fù)SQLserver數(shù)據(jù)庫(kù)

    一個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù)庫(kù),有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)庫(kù)每10天生成一個(gè)NDF文件,每個(gè)NDF幾百GB大小。數(shù)據(jù)庫(kù)包含兩個(gè)LDF文件。 存儲(chǔ)損壞,數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 10-31 13:21 ?287次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—通過(guò)拼接<b class='flag-5'>數(shù)據(jù)庫(kù)</b>碎片恢復(fù)SQLserver<b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)出現(xiàn)823錯(cuò)誤的數(shù)據(jù)恢復(fù)案例

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server附加數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤823,附加數(shù)據(jù)庫(kù)失敗。數(shù)據(jù)庫(kù)沒有備份,無(wú)法通過(guò)備份恢復(fù)數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 09-20 11:46 ?380次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>出現(xiàn)823錯(cuò)誤的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    Oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫(kù)delete刪除的數(shù)據(jù)恢復(fù)方法

    刪除Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)一般有以下2種方式:delete、droptruncate。下面針對(duì)這2種刪除oracle
    的頭像 發(fā)表于 09-11 11:45 ?402次閱讀

    華納云:MySQL初始化操作如何創(chuàng)建新的數(shù)據(jù)庫(kù)

    要在MySQL中創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),可以按照以下步驟進(jìn)行操作: 登錄到MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)中??梢允褂?b class='flag-5'>MySQL命令行客戶端或者圖形化工
    的頭像 發(fā)表于 09-04 14:30 ?289次閱讀

    恒訊科技分析:跨境電商網(wǎng)站有哪些數(shù)據(jù)庫(kù)系統(tǒng)是推薦使用的?

    對(duì)于跨境電商網(wǎng)站,數(shù)據(jù)庫(kù)系統(tǒng)的選擇非常關(guān)鍵,以下是一些推薦使用的數(shù)據(jù)庫(kù)系統(tǒng): 1、MySQLMySQL是一個(gè)流行的開源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
    的頭像 發(fā)表于 08-12 15:01 ?405次閱讀

    恒訊科技分析:sql數(shù)據(jù)庫(kù)怎么用?

    SQL數(shù)據(jù)庫(kù)的使用通常包括以下幾個(gè)基本步驟: 1、選擇數(shù)據(jù)庫(kù)系統(tǒng): 選擇適合您需求的SQL數(shù)據(jù)庫(kù)系統(tǒng),如MySQL、PostgreSQL、Microsoft SQL Server、SQ
    的頭像 發(fā)表于 07-15 14:40 ?387次閱讀

    數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)庫(kù)的主要區(qū)別

    數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)庫(kù)是兩個(gè)在信息技術(shù)領(lǐng)域中常見的概念,它們?cè)?b class='flag-5'>數(shù)據(jù)管理和分析方面發(fā)揮著重要作用。盡管它們?cè)谀承┓矫嬗邢嗨浦帲鼈冊(cè)谠O(shè)計(jì)、目的和功能上存在顯著差異。本文將介紹數(shù)據(jù)倉(cāng)庫(kù)與
    的頭像 發(fā)表于 07-05 14:57 ?549次閱讀

    Oracle數(shù)據(jù)恢復(fù)—Oracle數(shù)據(jù)庫(kù)truncate表的數(shù)據(jù)恢復(fù)案例

    北京某國(guó)企客戶Oracle 11g R2數(shù)據(jù)庫(kù)truncate table CM_CHECK_ITEM_HIS,表數(shù)據(jù)丟失,業(yè)務(wù)查詢到該表時(shí)報(bào)錯(cuò),數(shù)據(jù)庫(kù)的備份不可用,無(wú)法查詢表
    的頭像 發(fā)表于 03-11 17:30 ?407次閱讀
    Oracle<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>誤<b class='flag-5'>truncate</b>表的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例