相同點(diǎn),,使用drop delete truncate 都會(huì)刪除表中的內(nèi)容 drop table 表名 delete from 表名(后面不跟where語(yǔ)句,,則也刪除表中所有的數(shù)據(jù)) truncate table 表名 區(qū)別 首先delete 屬于DML,當(dāng)不commit時(shí)時(shí)不生效的 而truncate 和 drop 則是直接生效的,不能回滾,。 truncate 和 delete 不刪除表的結(jié)構(gòu),,只是針對(duì)表中的內(nèi)容刪除 drop語(yǔ)句將刪除表的結(jié)構(gòu),被依賴的約束(constrain),觸發(fā)器(trigger),索引(index); 依賴于該表的存儲(chǔ)過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài). truncate 會(huì)釋放占用空間,,而drop 和 delete不會(huì),。 速度:drop>truncate>dalete 綜上所述,可以得到一個(gè)問題,,使用drop 和 truncate相對(duì)delete是危險(xiǎn)的,,當(dāng)使用drop 和 truncate 時(shí)不能回滾。delete相對(duì)安全,,可以回滾,,并且commit以后才會(huì)提交,并且不會(huì)刪除表結(jié)構(gòu),,也不會(huì)釋放表所占用的空間,。 |
|
來(lái)自: 野崎君noZakiKu > 《Linux初步(轉(zhuǎn))》