请详细的说一下truancate和delete在删除表的时候有什么区别,除了(truncate删除表后不能回滚,delete可以回滚;truncate删除的数据不会产生日志记录,delete删除的数据会产生日志记录;truncate直接删除全部的数据,delete可以加上where条件删除部分数据;truncate效率高,delete效率低;)这些之外还有别的吗?
truncate是把数据库的表内容全部清空
delete一般是删除一些特定的数据库记录,根据你的where条件等
drop是连数据库的表都删除了
truncate不需要检索数据容易造成操作失误安全性比较低
truncate是把数据库的表内容全部清空,保留表结构
delete是根据条件删除数据库记录
drop是数据库表删除
truncate 和 delete 都是用来删除表中数据的,区别在于
trucate是一种DDL操作,它直接删除表底层的物理存储文件,不会触发事务,而且只能用来清空整个表。
delete则是一种事务操作,可以提交,可以回滚,它用来根据where条件删除某一条或一些记录,当然也是可以清空整个表。
另外,trucate会释放自增主键,而delelte不会。
drop则是删除整个表,表数据包括表结构都将会消失。
drop是删除表,这个表结构都没有了,剩下两个是删除数据用的,表结构还在。
delete删除的不完全,为什么呢,比如你有一个自增字段,用delete删除完所有的10行数据后再插入数据,自增字段是从11开始的,会接着以前的累加;
而truncate会删除这些自增信息,再插入时是从1开始的(假设你是定义的1开始)。