oracle刪除表


https://blog.csdn.net/qq_40087415/article/details/78812019

刪除表(記錄和結構)的語名:delete —— truncate —— drop
      delete (刪除數據表里記錄的語句)
delete from 表名 where 條件;
      注意:刪除記錄並不能釋放Oracle里被占用的數據塊表空間。它只把那些被刪除的數據塊標成unused
   如果確實要刪除一個大表里的全部記錄, 可以用 truncate 命令, 它可以釋放占用的數據塊表空間
truncate table 表名;
      此操作不可回退.
  相同點
      truncate 和不帶 where 子句的 delete, 以及 drop 都會刪除表內的數據
      注意:這里說的 delete 是指不帶 where 子句的 delete 語句
  不同點
      1、truncate 和 delete只刪除數據不刪除表的結構(定義)
          drop 語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的存儲過程/函數將保留,但是變為 invalid 狀態。
      2、delete 語句是dml,這個操作會放到 rollback segement 中,事務提交之后才生效;如果有相應的 trigger,執行的時候將被觸發。
          truncate ,drop 是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾,操作不觸發trigger。
      3、delete 語句不影響表所占用的 extent ,高水線(high watermark)保持原位置不動
          顯然 drop 語句將表所占用的空間全部釋放
          truncate 語句缺省情況下見空間釋放到 minextents個 extent,除非使用reuse storage;   truncate會將高水線復位(回到最開始).
      4、速度,一般來說: drop > truncate > delete
      5、安全性:小心使用 drop 和 truncate,尤其沒有備份的時候,否則哭都來不及。
          使用上,想刪除部分數據行用 delete,注意帶上 where 子句,回滾段要足夠大。
          想刪除表,當然用drop
          想保留表而將所有數據刪除, 如果和事務無關,用 truncate 即可。 如果和事務有關,或者想觸發 trigger ,還是用 delete。
          如果是整理表內部的碎片,可以用 truncate 跟上 reuse stroage ,再重新導入/插入數據
  oracle中刪除表中的一列語句
alter table 表名 drop colum 列名


免責聲明!

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



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