欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL中Truncate的用法詳解

 更新時間:2021年01月14日 11:49:11   作者:小明&繹心  
這篇文章主要介紹了MYSQL中Truncate的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文導(dǎo)讀:刪除表中的數(shù)據(jù)的方法有delete,truncate, 其中TRUNCATE TABLE用于刪除表中的所有行,而不記錄單個行刪除操作。TRUNCATE TABLE 與沒有 WHERE 子句的 DELETE 語句類似;但是,TRUNCATE TABLE 速度更快,使用的系統(tǒng)資源和事務(wù)日志資源更少。下面介紹SQL中Truncate的用法

當(dāng)你不再需要該表時, 用 drop;當(dāng)你仍要保留該表,但要刪除所有記錄時, 用 truncate;當(dāng)你要刪除部分記錄時(always with a WHERE clause), 用 delete.

Truncate是一個能夠快速清空資料表內(nèi)所有資料的SQL語法。并且能針對具有自動遞增值的字段,做計數(shù)重置歸零重新計算的作用。

一、Truncate語法

[ { database_name.[ schema_name ]. | schema_name . } ]
  table_name
[ ; ]

參數(shù)

database_name
數(shù)據(jù)庫的名稱。

schema_name
表所屬架構(gòu)的名稱。

table_name
要截斷的表的名稱,或要刪除其全部行的表的名稱。

二、Truncate使用注意事項

1、TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少。

2、DELETE 語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。

3、TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變。新行標(biāo)識所用的計數(shù)值重置為該列的種子。如果想保留標(biāo)識計數(shù)值,請改用 DELETE。如果要刪除表定義及其數(shù)據(jù),請使用 DROP TABLE 語句。

4、對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應(yīng)使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。

5、TRUNCATE TABLE 不能用于參與了索引視圖的表。

6、對用TRUNCATE TABLE刪除數(shù)據(jù)的表上增加數(shù)據(jù)時,要使用UPDATE STATISTICS來維護索引信息。

7、如果有ROLLBACK語句,DELETE操作將被撤銷,但TRUNCATE不會撤銷。

三、不能對以下表使用 TRUNCATE TABLE

1、由 FOREIGN KEY 約束引用的表。(您可以截斷具有引用自身的外鍵的表。)

2、參與索引視圖的表。

3、通過使用事務(wù)復(fù)制或合并復(fù)制發(fā)布的表。

4、對于具有以上一個或多個特征的表,請使用 DELETE 語句。

5、TRUNCATE TABLE 不能激活觸發(fā)器,因為該操作不記錄各個行刪除。

四、TRUNCATE、Drop、Delete區(qū)別

1.drop和delete只是刪除表的數(shù)據(jù)(定義),drop語句將刪除表的結(jié)構(gòu)、被依賴的約束(constrain)、觸發(fā)器 (trigger)、索引(index);依賴于該表的存儲過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài)。
2.delete語句是DML語言,這個操作會放在rollback segement中,事物提交后才生效;如果有相應(yīng)的觸發(fā)器(trigger),執(zhí)行的時候?qū)⒈挥|發(fā)。truncate、drop是DDL語言,操作后即 生效,原數(shù)據(jù)不會放到rollback中,不能回滾,操作不會觸發(fā)trigger。

3.delete語句不影響表所占用的extent、高水線(high watermark)保持原位置不動。drop語句將表所占用的空間全部釋放。truncate語句缺省情況下將空間釋放到minextents的 extent,除非使用reuse storage。truncate會將高水線復(fù)位(回到最初)。

4.效率方面:drop > truncate > delete

5.安全性:小心使用drop與truncate,尤其是在 沒有備份的時候,想刪除部分?jǐn)?shù)據(jù)可使用delete需要帶上where子句,回滾段要足夠大,想刪除表可以用drop,想保留表只是想刪除表的所有數(shù)據(jù)、 如果跟事物無關(guān)可以使用truncate,如果和事物有關(guān)、又或者想觸發(fā) trigger,還是用delete,如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入、插入數(shù)據(jù)。

6.delete是DML語句,不會自動提交。drop/truncate都是DDL語句,執(zhí)行后會自動提交。

7、drop一般用于刪除整體性數(shù)據(jù) 如表,模式,索引,視圖,完整性限制等;delete用于刪除局部性數(shù)據(jù) 如表中的某一元組

8、DROP把表結(jié)構(gòu)都刪了;DELETE只是把數(shù)據(jù)清掉

9、當(dāng)你不再需要該表時, 用 drop;當(dāng)你仍要保留該表,但要刪除所有記錄時, 用 truncate;當(dāng)你要刪除部分記錄時(always with a WHERE clause), 用 delete.

到此這篇關(guān)于MYSQL中Truncate的用法詳解的文章就介紹到這了,更多相關(guān)MYSQL Truncate內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL如何使用正則表達式對數(shù)據(jù)進行過濾

    SQL如何使用正則表達式對數(shù)據(jù)進行過濾

    正則表達式的作用是匹配文本,將一個正則表達式與一個文本串進行比較,下面這篇文章主要給大家介紹了關(guān)于SQL如何使用正則表達式對數(shù)據(jù)進行過濾的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Mysql LONGTEXT 類型存儲大文件(二進制也可以) (修改+調(diào)試+整理)

    Mysql LONGTEXT 類型存儲大文件(二進制也可以) (修改+調(diào)試+整理)

    MySql2.cpp : Defines the entry point for the console application.
    2009-07-07
  • 詳解MySQL主從復(fù)制實戰(zhàn) - 基于日志點的復(fù)制

    詳解MySQL主從復(fù)制實戰(zhàn) - 基于日志點的復(fù)制

    這篇文章主要介紹了詳解MySQL主從復(fù)制實戰(zhàn) - 基于日志點的復(fù)制,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 10個mysql中select語句的簡單用法

    10個mysql中select語句的簡單用法

    本篇文章主要講述的是MySQL SELECT句法的簡單分析,我們大家都知道MySQL數(shù)據(jù)庫是我們大家經(jīng)常使用的數(shù)據(jù)庫,其相關(guān)的應(yīng)用也是備受關(guān)注的,那么以下的文章主要是對MySQL SELECT句法的簡單分析。
    2014-08-08
  • MySQL如何用GROUP BY分組取字段最大值或最新一條

    MySQL如何用GROUP BY分組取字段最大值或最新一條

    這篇文章主要介紹了MySQL如何用GROUP BY分組取字段最大值或最新一條問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Mysql存儲引擎特性總結(jié)

    Mysql存儲引擎特性總結(jié)

    這篇文章主要介紹了Mysql存儲引擎特性總結(jié),同時總結(jié)了最常用的2種存儲引擎的特性,以及各引擎的適用環(huán)境,需要的朋友可以參考下
    2014-07-07
  • 使用SQL語句統(tǒng)計數(shù)據(jù)時sum和count函數(shù)中使用if判斷條件的講解

    使用SQL語句統(tǒng)計數(shù)據(jù)時sum和count函數(shù)中使用if判斷條件的講解

    今天小編就為大家分享一篇關(guān)于使用SQL語句統(tǒng)計數(shù)據(jù)時sum和count函數(shù)中使用if判斷條件的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 詳解MySQL中UNION的用法

    詳解MySQL中UNION的用法

    這篇文章主要介紹了詳解MySQL中UNION的用法,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Mysql查看數(shù)據(jù)庫時區(qū)并設(shè)置時區(qū)的方法

    Mysql查看數(shù)據(jù)庫時區(qū)并設(shè)置時區(qū)的方法

    這篇文章主要介紹了Mysql查看數(shù)據(jù)庫時區(qū)并設(shè)置時區(qū)的方法,設(shè)置時區(qū)的方式可以通過mysql命令行模式下動態(tài)修改以及通過修改配置文件來修改時區(qū),需要的朋友可以參考下
    2024-02-02
  • 深入了解MySQL中的慢查詢

    深入了解MySQL中的慢查詢

    什么是MySQL慢查詢呢?其實就是查詢的SQL語句耗費較長的時間。具體耗費多久算慢查詢呢?這其實因人而異,有些公司慢查詢的閾值是100ms,有些的閾值可能是500ms。本文將通過示例和大家聊聊慢查詢的危害和常用場景,感興趣的可以了解一下
    2022-10-10

最新評論