oracle删除表语句
删除表(记录和结构)的语名delete  ————  truncate      ———— drop
  DELETE (删除数据表⾥记录的语句)
  DELETE FROM表名 WHERE 条件;
  注意:删除记录并不能释放ORACLE⾥被占⽤的数据块表空间. 它只把那些被删除的数据块标成unused.
  如果确实要删除⼀个⼤表⾥的全部记录, 可以⽤ TRUNCATE 命令, 它可以释放占⽤的数据块表空间
  TRUNCATE TABLE 表名;
  此操作不可回退.
  相同点
  truncate和不带where⼦句的delete, 以及drop都会删除表内的数据
  注意:这⾥说的delete是指不带where⼦句的delete语句
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 列名

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。