a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 96|回复: 0

[综合] Oracle进行删除操作的方法分析

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
删除表(记实和结构)的优缦沱delete ———— truncate ———— drop   DELETE (删除数据内外记实的语句)
( T; O( N# K0 |3 f* I& c  q) j  DELETE FROM表名 WHERE 前提;
4 i) V! Q8 k0 ]  G  Q  注重:删除记实并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.7 G6 N! s; B1 [& |& T; b6 G8 S
  如不美观确实要删除一个年夜内外的全数记实, 可以用 TRUNCATE 呼吁, 它可以释放占用的数据块表空间' i2 t/ f' b8 {8 U
  TRUNCATE TABLE 表名;
) z$ o- p4 g: X3 t1 ^; C& P, y  此操作不成回退.
* q9 ?; G2 a+ v  不异点( s0 J' q) o# F$ Q+ v/ E; F/ V, {
  truncate和不带where子句的delete, 以及drop城市删除表内的数据2 f6 a) G$ W: w4 t
  注重:这里说的delete是指不带where子句的delete语句. s0 e- Z  {* M1 S
  分歧点:% `* k' r  g8 ?0 T* o& p
  1. truncate和 delete只删除数据不删除表的结构(界说)
7 Q4 q# H, U7 p4 j  drop语句将删除表的结构被依靠的约束(constrain),触发器(trigger),索引(index); 依靠于该表的存储过程/函数将保留,可是变为invalid状况.
- f- K; H# |1 v3 G  2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如不美观有响应的trigger,执行的时辰将被触发.
  x( {% L! e/ E& {5 B  truncate,drop是ddl, 操作当即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
/ w- |; }' N' s4 b0 S  3.delete语句不影响表所占用的extent, 高水线(high watermark)连结原位置不动9 c7 l' J- f/ h1 i6 ], q9 c
  显然drop语句将表所占用的空间全数释放
' c! X+ c5 R* v8 K! V! h% F  truncate 语句缺盛意形下见空妓晔着到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最起头).
1 E! k" O5 a8 y  H. o  4.速度,一般来说: drop>; truncate >; delete
) E  A2 _: W. D; C  5.平安性:小心使用drop 和truncate,尤其没有备份的时辰.否则哭都来不及
# A% M6 l4 R# `+ B* F" G) `8 d) F  使用上,想删除部门数据行用delete,注重带上where子句. 回滚段要足够年夜.9 b* k1 D9 C9 \: h8 M! L3 `- ~% x% H. T
  想删除表,当然用drop
/ D: Y- B6 O6 k9 g1 ^  L3 w) w  想保留表而将所稀有据删除. 如不美观和事务无关,用truncate即可. 如不美观和事务有关,或者想触发trigger,仍是用delete.. U7 M  t( v. t. J
  如不美观是清算表内部的碎片,可以用truncate跟上reuse stroage,再年夜头导入/插入数据
7 d6 i* D% s/ u- v, b$ s  oracle中删除表中的一列语句+ ~  F. O9 t! X/ N
  alter table 表名 drop colum 列名
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-14 17:28 , Processed in 0.145457 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表