TRUNCATE
語法: TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE]
功能: 刪除整個表的數據並釋放空間
功能: 刪除整個表的數據並釋放空間
描述:
- 由於Truncate 是DDL 命令,所以執行過程中原數據不放在Rollback Segment 中,不產生回滾數據 ,不產生Redo Log 。
- Truncate , Drop 等DDL命令都是隱含提交的。
- 需要drop的操作權限
- 相當於這樣的流程:先drop table 然后 create table。
- 不記錄日志,無法恢復
- auto increatment 自增會恢復從頭開始自增。
- 執行速度比delete快
DELETE
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROMtbl_name
[PARTITION (partition_name
,...)] [WHEREwhere_condition
] [ORDER BY ...] [LIMITrow_count
]
- delete是DML,執行delete操作時,每次從表中刪除一行,並且同時將該行的的刪除操作記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,但要注意表空間要足夠大,需要手動提交(commit)操作才能生效,可以通過rollback撤消操作。
- 有where條件刪除where條件中所限制的數據;沒有where條件則刪除所有的數據
- 如果有order by從句,則根據order by的排序順序依次刪除,如果有limit 從句則只刪除limit限制的數量
- 執行速度最慢,但是安全性最高
DROP
DROP [TEMPORARY] TABLE [IF EXISTS]tbl_name
[,tbl_name
] ... [RESTRICT | CASCADE]
- 直接刪除表結構的文件和數據文件,執行速度最快