陵水网站建设哪家专业,买空间做网站,推广互联网推广,重庆网站服务建设oracle数据库#xff0c;mysql数据库都是drop命令truncate命令delete命令#xff0c;他们的执行方式、效率和结果各有不同。下面我们就来看看吧
一、drop命令 语句drop table 表名 说明#xff1a; 1.用drop删除表数据#xff0c;不但会删除表中的数据#xff0c…oracle数据库mysql数据库都是drop命令truncate命令delete命令他们的执行方式、效率和结果各有不同。下面我们就来看看吧
一、drop命令 语句drop table 表名 说明 1.用drop删除表数据不但会删除表中的数据连结构也会被删除 2.将被隐式提交 二、truncate命令 语句truncate table 表名 说明 1.用truncate删除表数据只是删除表中的数据表结构不会被删除 2.删除整个表的数据时过程是系统一次删除数据效率比较高 3.truncate 删除释放空间 4.将被隐式提交
三、delete命令 语句delete from 表名 说明 1.用delete删除表数据只是删除表中的数据表结构不会被删除 2.虽然也是删除整个表的数据但是过程是系统一行一行的删效率也比truncate低 3.delete删除是不释放空间的 4.delete是DML语句不会自动提交需要手动提交事务
总结 1.drop、truncate都是DDL语言数据定义语言向其他所有的DDL语言一样它将被隐式提交。delete是DML语句不会自动提交。
2.truncate和delete只删除数据不删除表的结构drop语句将删除表的结构被依赖的约束、触发器、索引依赖于该表的存储过程/函数将保留但是变为invalid无效状态
3.delete语句是数据库操作语言DML,这个操作会放到rollback segment中事务提交之后才生效如果有相应的tigger,执行的时候将被触发
4.truncate、drop 是数据库定义语言(DDL)操作立即生效原数据不放到rollback segment 中不能回滚操作不触发 trigger。
5.delete 语句不影响表所占用的extent高水线(high watermark)保持原位置不动、drop 语句将表所占用的空间全部释放。
6.truncate 语句缺省情况下将空间释放到 minextents个extent除非使用reuse storagetruncate 会将高水线复位(回到最开始)。
7.速度等级分别: drop命令truncate命令delete命令
8.实际使用以及安全性谨慎使用 drop和 truncate一旦执行没有退步的余地。如想删除部分数据行用 delete加上where条件子句。 想删除表当然是 drop了、想保留表而将所有数据删除如果和事务无关用truncate即可。如果和事务有关或者想触发trigger还是用delete。如果是整理表内部的碎片可以用truncate跟上reuse stroage再重新导入或插入数据。
9.truncate table 表名 在功能上与不带 WHERE 子句的 DELETE 语句相同二者均可删除表中的全部行。但 truncate table 比 delete 速度快且使用的系统和事务日志资源少。
10.delete 语句每次删除一行并在事务日志中为所删除的每行记录一项。truncate table 通过释放存储表数据所用的数据页来删除数据并且只在事务日志中记录页的释放。
11.truncate table 删除表中的所有行但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值请改用 delete。如果要删除表定义及其数据请使用 drop table 语句。
12.对于有 foreign key 约束引用的表不能使用 truncate table而应使用不带 where 子句的 delete 语句。由于 truncate table 不记录在日志中所以它不能激活触发器。
13.truncate table 不能用于参与索引视图的表。