注意事项

1.在oracle中数据删除后还能回滚是因为它把原始数据放到了undo表空间。

2.DML语句使用undo表空间,DDL语句不使用undo,  而delete是DML语句,truncate是DDL语句,另外DDL语句是隐式提交.所以truncate操用不能回滚,而delete操作可以。

truncate与delete相同点:
1 在oracle中删除表中的数据的方法有delete,truncate
2 它们都是删除表中的数据,而不能删除表结构.

truncate与delete之间的区别
1: delete 可删除整个表的数据也可删除表中某一条或N条满足条件的数据,删除的数据可恢复.命令完成就可回滾.
2: truncate只能删除整个表的数据,自动提交.命令完成不可回滾.truncate的速度也比delete要快得多,truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认)delete 则不可以.
3: truncate 只能对TABLE,delete 可以是table,view,synonym
4: TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限.

一 :truncate
语法:
truncate table table_name;

二 :delete
语法:
delete table_name;或者delete from table;

三:重要区别


delete在plsql中是可执行的,但是truncate在plsql中不能执行,只能用动态sql执行,如下:
Sql代码 
execute immediate 'truncate table  表名';

注意最后一点,前面因为不知道truncate是DDL语言,在PLSQL中用法,结果写过程时。

报错:

create or replace procedure proceName  as
begin
  truncate  table TABLE_NAME;

……

end proceName;

可编译:

create or replace procedure proceName  as
begin
  execute immediate 'truncate  table TABLE_NAME;

……

end proceName;

truncate与delete 、drop的区别的更多相关文章

  1. sql 删除表数据truncate delete drop的区别

    已下内容为转载内容:学习之用 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. ...

  2. delete,truncate 和 delete之间的区别

    1.首先看下语法定义: drop table_name truncate table_name delete table_name [where column_name = value] 2.各个删除 ...

  3. SQL-truncate && delete && drop 的区别

    有些人在删除表的所有记录的时候,喜欢这样来——不给DELETE 语句提供WHERE 子句,表中的所有记录都将被删除.但这种方法是不可取的,正确的应该使用 TRUNCATE TABLE tb_name ...

  4. SqlServer-truncate && delete && drop 的区别

    有些人在删除表的所有记录的时候,喜欢这样来——不给DELETE 语句提供WHERE 子句,表中的所有记录都将被删除.但这种方法是不可取的,正确的应该使用 TRUNCATE TABLE tb_name ...

  5. sql之truncate 、delete与drop区别

    sql之truncate .delete与drop区别相同点:truncate 和不带 where 子句的 delete,以及 drop 一定会删除表内的数据不同点:1. truncate 和 del ...

  6. sql中truncate 、delete与drop区别

    SQL truncate .delete与drop区别   相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL ...

  7. delete、truncate与drop的区别

    转自:SQL truncate .delete与drop区别 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DD ...

  8. SQL truncate 、delete与drop区别

    SQL truncate .delete与drop区别 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句 ...

  9. truncate、delete、drop区别

    语法: truncate table 表名 delete from 表名 drop table 表名 应用范围: truncate 只能对表,且不能用于参与了索引的表,不能用于外键约束引用的表 del ...

随机推荐

  1. mysql的登录密码带特殊符号登录不进去的问题

    eg : mysqldump -u root -p)P:9 ${dbname} > $dataPath$filename 当我将数据库的数据每天进行自动导出时,需要带上密码,但 ) 是一个特殊符 ...

  2. Native libraries .so.XY failing to link at runtime

    What you need to do is edit the configure file. And find out this: SLIBNAME='$(SLIBPREF)$(FULLNAME)$ ...

  3. xmpp 协议之可扩展消息(messaging)与状态(presence)协议核心: RFC 3920

    附:asmack已经不需要了,4.1以后的smack已经可以在android上使用了. XMPP Clients:   http://xmpp.org/software/clients.html An ...

  4. JDBC学习笔记(10)——调用函数&存储过程

    如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement *    对象的实例,在使用Con ...

  5. mysql一些写常用命令

    参见pcttcnc2007博客腾飞 1.mysql的status信息命令: mysql> show global status; 2.可以列出mysql服务器运行各种状态值,另外,查询mysql ...

  6. [置顶] Jquery中DOM操作(详细)

    Jquery中的DOM操作 为了能全面的讲解DOM操作,首先需要构建一个网页. HTML代码: <%@ page language="java" import="j ...

  7. Javascript 原型继承(续)—从函数到构造器的角色转换

    对于每一个声明的函数,里边都会带有一个prototype成员,prototype会指向一个对象,现在我们来聚焦prototype指向的这个对象,首先我们会认为,这个对象是一个该函数对应的一个实例对象, ...

  8. Ehcache(01)——简介、基本操作

    http://haohaoxuexi.iteye.com/blog/2112170 目录 1       CacheManager 1.1      构造方法构建 1.2      静态方法构建 2  ...

  9. CESAsia:英特尔RealSense3D实感技术亮眼

    每年CES展会上都会有许多新奇的.更具创意的产品和创新技术亮相,而作为全球科技盛会之一的CES Asia也不例外.在CES Asia2016展会上,英特尔(Intel)可谓是有备而来,带着旗下支持Re ...

  10. RT-Thread学习笔记(2)

    这段时间稍微折腾了一下stm32,稍微知道了一点stm32程序的编写方法,所以再次拿起了rtt,因为这个东西确实很强大. 随手记录一下rtt的一些知识: 1.关于finsh 这是一个命令行系统,很好玩 ...