delete、drop、truncat的用法區別
先清楚幾個概念:DDL、DML和DCL
DDL:數據定義語言(Data Definition Language),對所有對象(例如database,table)進行定義和管理
例如:create\alter\drop\truncate\create\drop
DML:數據操作語言(Data Manipulation Language),對數據庫裏的數據進行操作
例如:insert\update\delete\select
DCL:數據控制語言(Data Control Language),授予或回收訪問數據庫的特權,控制數據庫操作事務的時間效果等
例如:commit\savepoint\rollback
-
delete
delete是DML,只刪除數據,不影響表結構,操作會放到rollback segement中,可以回滾,會觸發tigger。執行速度最慢,安全性最高。
-
drop
drop是DDL,會刪除表結構,操作立刻生效,數據不會放到rollback segement中,不可以回滾。
-
truncat
truncat是DDL,刪除整個表的數據並釋放空間,數據不會放到rollback segement中,不可以回滾、
truncat需要drop的權限,流程相當於drop table然後create table,不記錄日誌,無法恢復,速度比delete快
執行速度:drop>truncate>delete
自己的一點理解與整理,哪裏有問題歡迎提出,謝謝