最近在做的项目中需要对表进行重用,准确地说应该是把数据表中地数据清掉,但表结构及索引等表属性都不变。针对这个场景,这里简单区分下SQL中常见的drop、truncate、delete;已经了解的同学可以略过。
从操作性质上分:
SQL有DDL、DCL、DML三种:
delete属于DML(数据库操作语言):操作原数据会被放置到rollback segement 中,可进行回滚操作(用于事务原子操作),同时可触发trigger;
truncate、drop属于DDL(数据库定义语言):操作立即执行,无数据被放置rollback segement区域,不会触发triggle(由于 truncate TABLE 释放数据页资源,不记录在日志中,所以它不能激活触发器);
从功能上分:
简单粗略分析:delete功能相对更多,可以添加where 语句:delete from 表名称 where 列名称 = 值;
具体细分:
drop (删除表):删除内容和定义,把整个表去掉,同时释放资源(删除表的结构被依赖的约束(con