Oracle中删除表操作trunc delete和drop的说明

相同点:
1.truncate和不带where子句的delete, 以及drop都会删除表内的数据。
2.drop,truncate都是DDL语句,执行后会自动提交。

不同点:
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,再重新导入/插入数据

DML DCL DDL TCL说明:

1. DDL   

 Data Definition Language (DDL) statements are used to define the database structure or schema. Some examples:

  CREATE - to create objects in the database

  ALTER - alters the structure of the database

  DROP - delete objects from the database

  TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed

  COMMENT - add comments to the data dictionary

  RENAME - rename an object

2. DML

  Data Manipulation Language (DML) statements are used for managing data within schema objects. Some examples:

  SELECT - retrieve data from the a database

  INSERT - insert data into a table

  UPDATE - updates existing data within a table

  DELETE - deletes all records from a table, the space for the records remain

  MERGE - UPSERT operation (insert or update)

  CALL - call a PL/SQL or Java subprogram

  EXPLAIN PLAN - explain access path to data

  LOCK TABLE - control concurrency

3. DCL

  Data Control Language (DCL) statements. Some examples:

  GRANT - gives user's access privileges to database

  REVOKE - withdraw access privileges given with the GRANT command

4. TCL

  Transaction Control (TCL) statements are used to manage the changes made by DML statements. It allows statements to be grouped together into logical transactions.

  COMMIT - save work done

  SAVEPOINT - identify a point in a transaction to which you can later roll back

  ROLLBACK - restore database to original since the last COMMIT

  SET TRANSACTION - Change transaction options like isolation level and what rollback segment to use

转自:http://blog.sina.com.cn/s/blog_48b7aa030100llz7.html

你可能感兴趣的:(oracle,truncate,drop,delete,oracle,delete,drop,truncate)