1、drop table table_name : 刪除表全部資料和表結構,立刻釋放磁碟空間,不管是 innodb 和 myisam;
例項,刪除學生表:
drop table student;
2、truncate table table_name : 刪除表全部資料,保留表結構,立刻釋放磁碟空間 ,不管是 innodb 和 myisam;
例項,刪除學生表:
truncate table student;
3、delete from table_name : 刪除表全部資料,表結構不變,對於 myisam 會立刻釋放磁碟空間,innodb 不會釋放磁碟空間;
例項,刪除學生表:
delete from student;
4、delete from table_name where *** : 帶條件的刪除,表結構不變,不管是 innodb 還是 myisam 都不會釋放磁碟空間;
例項,刪除學生表中姓名為 "張三" 的資料:
delete from student where t_name = "張三";
5、delete 操作以後,使用 optimize table table_name 會立刻釋放磁碟空間,不管是 innodb 還是 myisam;
例項,刪除學生表中姓名為 "張三" 的資料:
delete from student where t_name = "張三";
例項,釋放學生表的表空間:
optimize table student;
6、delete from 表以後雖然未釋放磁碟空間,但是下次插入資料的時候,仍然可以使用這部分空間。
1、當你不再需要該錶時, 用 drop;
2、當你仍要保留該錶,但要刪除所有記錄時, 用 truncate;
3、當你要刪除部分記錄時, 用 delete。
相同點:
1.truncate和不帶where子句的delete、以及drop都會刪除表內的資料。
2.drop、truncate都是ddl語句(資料定義語言),執行後會自動提交。
不同點:
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,再重新匯入/插入資料。
6.delete是dml語句,不會自動提交。drop/truncate都是ddl語句,執行後會自動提交。
7、truncate table 在功能上與不帶 where 子句的 delete 語句相同:二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。truncate table 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。
8、truncate table 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 delete。如果要刪除表定義及其資料,請使用 drop table 語句。
9、對於由 foreign key 約束引用的表,不能使用 truncate table,而應使用不帶 where 子句的 delete 語句。由於 truncate table 不記錄在日誌中,所以它不能啟用觸發器。
10、truncate table 不能用於參與了索引檢視的表。
mysql 產生臨時表的幾種情況
1 union查詢 2 用到temptable演算法或者是union查詢中的檢視 3 order by和group by的子句不一樣時 4 表連線中,order by的列不是驅動表中的 5 distinct查詢並且加上order by時 6 sql中用到sql small result選項時 7 f...
mysql刪除表的幾種方式
刪除表的幾種方式 建立乙個資料庫為 mybatis,表為user,插入幾條資料 drop table user 直接刪除表資訊,最快 truncate table user 刪除表資料,不刪除表的結構,速度排第二 delete from user where 1 1 根據條件刪除資料,不刪除表結構,...
Pandas刪除資料的幾種情況 小結
開始之前,pandas中dataframe刪除物件可能存在幾種情況 1 刪除具體列 2 刪除具體行 3 刪除包含某些數值的行或者列 4 刪除包含某些字元 文字的行或者列 本文就針對這四種情況 一下如何操作。資料準備 模擬了乙份 交割的記錄。in 1 import pandas as pd in 2 ...