中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

drop、truncate、delete之間的區別是什么

發布時間:2021-11-05 11:22:08 來源:億速云 閱讀:145 作者:iii 欄目:關系型數據庫

這篇文章主要介紹“drop、truncate、delete之間的區別是什么”,在日常操作中,相信很多人在drop、truncate、delete之間的區別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”drop、truncate、delete之間的區別是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1.drop與truncate與delete功能與特點

01.Drop的特點
Drop table除了在數據庫層面刪除表,還會在系統層面刪除xxx.ibd,xxx.frm(InnoDB表)或 xxx.MYD,xxx.MYI,xxx.frm (MyISAM)等文件;
drop table if exists table_name可以防止表不存在的報錯,但是會有一個warning;
drop table也會隱式提交,除了臨時表;

02.Truncate的特點
?邏輯上truncate table和delete from table_name;相似,但是過程是先drop table,然后在re-create table,如果要清空一個大表的所有數據行,truncate比delete高效;
?Truncate是一個DDL操作,一旦執行會隱式提交,這就說明truncate無法rollback,所以執行之前需謹慎
?如果表被鎖住,truncate會報錯;
?如果有外鍵約束,truncate也會報錯;
?對于InnoDB/MyISAM表的auto_increment的列,truncate table之后可以重新使用序列值;
?truncate table無法觸發delete相關的觸發器;

03.Delete的特點
Delete是DML操作,如果沒有提交,可以rollback;
對于InnoDB/MyISAM表的auto_increment的列,delete table之后可以無法重新使用序列值,但是重啟之后可以重新使用序列;
Delete from table_name后面一定要跟where條件,否則會刪除表的所有行;

總結:
01.執行效率:drop > truncate > delete
02.在使用drop和truncate時一定要注意,雖然可以恢復,但為了減少麻煩,還是要慎重。
03.如果想刪除部分數據用delete,注意帶上where子句,回滾段要足夠大;如果想刪除表,當然用drop;如果想保留表而將所有數據刪除,如果和事務無關,用truncate即可;如果和事務有關,或者想觸發trigger,還是用delete;如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據。

2.truncate與delete區別

mysql和oracle數據庫中delete與truncate都是可以用來對數據進行刪除操作,但是二者又有些不同。
風哥為大家介紹以下幾個區別:

01.truncate與delete區別一:
根據sql語言分類來說,delete屬于DML語言,也就是數據操作語言,而truncate屬于DDL語言,也就是數據定義語言。

02.truncate與delete區別二:
delete不僅可以刪除表中的數據,還可以刪除基于真實表創建的視圖中的數據。truncate則只能刪除表中的數據,不能作用于視圖。

03.truncate與delete區別三:
由于delete刪除數據涉及到事務處理,會涉及到緩存,當數據非常大時,有可能緩存不夠用,所以這時使用delete刪除數據可能達不到刪除到的目的,而且速度特別慢。當涉及到大批量的數據時,truncate就非常適合,因為他不涉及到緩存,所以速度特別快,效率也高。

04.truncate與delete區別四:
在數據庫刪除數據時,delete可以根據需要進行刪除,也就是delete可以結合where條件進行精確的刪除某一條數據,而truncate則不能支持where子句,如果作用于表,則是直接刪除表所有數據。

05.truncate與delete區別五:
delete刪除表時,會涉及到事務處理,也就是可以支持事務提交,回滾。所謂事務就是支持數據一致性,原子性,持久性,隔離性。當使用delete刪除表數據時,首先它不會真正刪除,而是會將刪除的數據放入一個緩存區,可以通過回滾,從而恢復數據。但是使用truncate刪除表中數據時,truncate不涉及事務處理,所以被truncate刪除的數據是不可恢復的。

06.truncate與delete區別六:
在對于一些存在關聯關系的表,使用delete刪除數據時,可以運用sql的業務邏輯順序來進行達到刪除數據的目的。例如表A與表B存在一對多的關系,表A中id為主鍵,并且id在表B中是作為表B的外鍵。要刪除數據,這時不能直接刪除表B,而應該先刪除表A在進行刪除表B,這樣就達到目的。而truncate不能刪除對于由外鍵約束的表,它達不到刪除該表的目的。

07.truncate與delete區別七:
有時候對數據操作可能涉及到觸發器,用delete刪除數據時則有可能會激活觸發器,進行一些操作。而truncate是不存在觸發器的處理的。

到此,關于“drop、truncate、delete之間的區別是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建平县| 读书| 淮北市| 大荔县| 瑞安市| 四平市| 句容市| 龙口市| 安乡县| 若尔盖县| 锡林郭勒盟| 盐城市| 永济市| 喜德县| 伊吾县| 安溪县| 集安市| 英超| 梁山县| 连山| 闸北区| 封开县| 海原县| 武山县| 木兰县| 磐石市| 双城市| 吕梁市| 陈巴尔虎旗| 荣成市| 瓦房店市| 永年县| 青海省| 孝昌县| 濮阳县| 南阳市| 永泰县| 垣曲县| 德昌县| 乌拉特后旗| 彭水|