truncate和delete,drop的区别

 

 

    delete: delete from 表

    drop: drop table 表  删除整个表结构包括数据 无法恢复

    truncate:truncate table 表

-----------------------------------------------------------------------------------

1:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。

2: TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

3:DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

4:TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。举例:

       使用identity。truncate  table  表。之后。再插入的话,标识列的计数值又重1开始。

 

create table tcc( id int identity primary key, name varchar ) insert into tcc values('a'); insert into tcc values('b'); select *from tcc;

 

 

id

name

1

a

2

b

 

使用delete删除

delete from tcc; insert into tcc values('a'); insert into tcc values('b'); select *from tcc;

 

 

结果:identity是从3开始

id

name

3

a

4

b

使用 truncate

 

 

id

name

1

a

2

b

 

5:对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。

注意:对于复制表,只能复制表结构或数据,外键约束不能复制,所以可以用truncate 删除,

举例: 熟悉的emp dept表

    就可以truncate  table dept1;但是不能truncate  PL/SQL工具自带的dept表,

 

 

6:由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。 Oracle中不用committ,delete需要,所以truncate后不能恢复数据

TRUNCATE TABLE 不能用于参与了索引视图的表。

 

7drop  table  表  。删除表全部 ,包括结构数据。

 

create table dept1 as select *from dept where 1=1; 
create table emp1 as select *from emp where 1=1; 

 

truncate table tcc; insert into tcc values('a'); insert into tcc values('b'); select *from tcc; 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值