MySQL筆記-turncat、drop、delete的區別


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM