Oracle几种清除数据的方式,在平台用别的医院数据库做初始化时有用

删除表(记录和结构)的语名delete   ————   truncate      ———— drop
  DELETE (删除数据表里记录的语句)
  DELETE FROM表名 WHERE 条件;
  注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.
  如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间
  TRUNCATE TABLE 表名;
  此操作不可回退.
  相同点
  truncate和不带where子句的delete, 以及drop都会删除表内的数据
  注意:
1.这里说的delete是指不带where子句的delete语句
2.在存储过程中默认是不允许执行truncate table tablename操作的,所以要使用
execute   immediate ‘truncate table tablename‘;
例如:

CREATE OR REPLACE PROCEDURE proc_delete_all_data  
IS  
BEGIN  
   execute immediate ‘truncate table T_FLOW_ACCOUNT‘;  
   execute immediate ‘truncate table T_FLOW_MERCHANT‘;  
END proc_delete_all_data;

不同点:
  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 列名

原文地址:http://bbs.delit.cn/thread-164-1-1.html

转载请注明出处:

撰写人:度量科技www.delit.cn

时间: 2024-08-26 21:25:28

Oracle几种清除数据的方式,在平台用别的医院数据库做初始化时有用的相关文章

Request三种获取数据的方式

今天在做ajax请求后台代码时,发现ajax的方法都对,但就是请求不了后台代码,后来在同事帮助下才发现前台定义了两个相同参数导致请求出错. 下面记录一下request三种获取数据的方式: 1. Request.QueryString: 该方法主要是获取页面路径URL的参数: 2. Request.Form:该方法主要是以post请求方式获取报文体的参数: 3. Request.param:包含上面两种方式,它会在QueryString,Form,ServerVariable中都搜索一遍: 而我今

四种保存数据的方式

转载地址:http://blog.csdn.net/tianyitianyi1/article/details/7713103 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:

ajax有两种提交数据的方式,分别为get和post(转)

ajax有两种提交数据的方式,分别为get和post.post方法可传输大于2K的数据,在Ajax里的应用不同之处在于:"post方法的请求地址与传输的数据是放在两个对象里—-请求地址放在open对象里,传输的数据放在send对象里:并且在传输数据之前定义一个传输文件HTTP头信息(setRequestHeader)" 以下为引用的内容: <SCRIPT LANGUAGE="javascript"> function saveUserInfo(){ //

MySQL两种原生数据导入方式对比, 及使用

有这样一类需求, 将收集的数据, 处理为多个文件, 导入到MySQL数据库中对应的表内, 之后通过WEB应用展示给用户. 由于数据库是主从复制结构, 导入大量数据时, 复制延时比较大, 导致监控系统报警. 作为例行任务, 每次都报警, 确实让人心烦. 如何才能不报警呢- 大致有两个思路, 一个是从监控入手, 一个是尽量不让数据导入造成延时. 对于前者, 可调整数据库监控脚本, 导入数据过程有延时, 而不进行报警. 但有个问题, 对于使用从库对的应用, 可能由于延时, 获取不到正确的数据. 这样来

cocos2d-x中几种存储数据的方式

说明:本文所论述内容均基于cocos2dx 3.0 版本. 1.UserDefault 它是cocos2d-x用来存取基本数据类型用的.保存为XML文件格式. 查看CCUserDefault文件,可以看出,文件名默认为UserDefault.xml.在win32平台,Debug下,该文件在Debug.win32文件夹内.如果该文件不存在,则会创建新文件. 1 // root name of xml 2 #define USERDEFAULT_ROOT_NAME "userDefaultRoot&

转---IOS 四种保存数据的方式!

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码.例如对Possession对象归档保存.

EntityFramework中几种更改数据的方式

首先声明个实体类,该实体类是EntityFrameWork自动生成的,对应数据表Test结构如下 public partial class Test { public int Id{ get; set; }--主键 public string Name{ get; set; } public string Address{get;set;} } 第一种修改实体的方法: 手动创建对象,然后放入EF容器中,然后把状态设定为Modified,再把要修改的字段的IsModified属性设置为true,

iOS 四种保存数据的方式!

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码.例如对Possession对象归档保存.

IOS 四种保存数据的方式

在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码.例如对Possession对象归档保存.