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小时内删除。
发表评论