posts - 8, comments - 13, trackbacks - 0, articles - 43
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

先简单回顾下sql语言的几种语言:ddl,dml,dcl,它们分别是:

ddl即data definition language,例如常用的:create,alter,drop,truncate,grant,revoke,comment;

dml即data manipulation language,我们经常使用的:select,insert,update,delete等都是数据操作语言。

dcl即data control language,数据控制语言,平时基本用不到,如commit,savepoint,rollback,set transaction。

 

所以区别主要在:

  • delete是dml语句,这个操作使用放在rollback segement里,事务提交后才生效,是可以回滚的;truncate是ddl语句,它不在rollback segement里的,事务自动提交,操作立即生效,没有回滚一说,除非自身失败;
  • 还有一个关键,虽然truncate是数据定义语言,但是truncate和delete操作一样,都只删除数据不删除表结构,两者的主要区别在于,truncate操作是没有备份的,所以它执行速度比delete快;而另一个ddl语句drop,将删除的是结构包括被依赖的触发器,索引,约束,依赖该表的存储过程会被保留。刚才又搜索了下truncate和drop操作之后数据也还是可以找回来的:http://dbsnake.com/2010/06/truncate-drop-recovery.html

只有注册用户登录后才能发表评论。


网站导航: