相同點(diǎn),使用drop delete truncate 都會(huì)刪除表中的內(nèi)容
drop table 表名
delete from 表名(后面不跟where語句,則也刪除表中所有的數(shù)據(jù))
truncate table 表名
區(qū)別
首先delete 屬于DML,當(dāng)不commit時(shí)時(shí)不生效的
而truncate 和 drop 則是直接生效的,不能回滾。
truncate 和 delete 不刪除表的結(jié)構(gòu),只是針對(duì)表中的內(nèi)容刪除
drop語句將刪除表的結(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ì)釋放表所占用的空間。
聯(lián)系客服