PHP 執行多條 truncate

2021-06-26 15:58:48 字數 1930 閱讀 3401

相同點:

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   刪除表中的所有行,但表結構及其列、約束、索引等保持不變(如primary key 從1開始)。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用   delete。如果要刪除表定義及其資料,請使用   drop   table   語句。  

9、對於由   foreign   key   約束引用的表,不能使用   truncate   table,而應使用不帶   where   子句的   delete   語句。由於   truncate   table   不記錄在日誌中,所以它不能啟用觸發器。    

10、truncate   table   不能用於參與了索引檢視的表

php 中執行多條 truncate語句:

$queryarray = array(

"truncate table  table1;",

"truncate table  

table2;",

"truncate table  

table3;",

"truncate table  

table4;",

"truncate table  

table5;",

"truncate table  

table6;",

);//注意每條語句後面帶分號,否則會報錯

foreach ($queryarray as $query)

mysql 執行多條語句

在看專案的是看到mysql版本的專案,發現執行多條sql語句是都是先分離一條條的資料庫再一條條執行,我想應該有辦法一條條執行的吧 所以今天特意的查詢了一下 在jdbc下說可以設定連線字串的時候設定一下 設定成如下的 jdbc mysql 192.168.3.180 sample?user root ...

bash執行多條命令

在使用git過程中,命令比較多,希望改為一條命令 git提交時,總共需要三條命令 git add git commit m git push origin branchl branchrls date cd user pwd執行順序 命令順序執行,命令之間不存在關係,互不影響 作用 連線多個命令,簡...

MySql執行多條語句

說是在連線上設定 鏈結時設定 mysql real connect client multi statements 或者 中途指定 mysql set server option mysql,mysql option multi statements on mysql是連線的名稱 但是c 的驅動,沒...