删除表数据有两种方法:delete和truncate。具体语句如下:
一、RUNCATE TABLE name :
删除表中的所有行,而不记录单个行删除 *** 作。 在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。
TRUNCATE TABLE 的语法:TRUNCATE TABLE name ,参数 name 是要截断的表的名称或要删除其全部行的表的名称。
二、Delete from tablename where 1=1
1、delete语法:
DELETE FROM 表名称 WHERE 列名称 = 值。
2、删除所有行:
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:DELETE FROM table_name。
扩展资料:
truncate和delete的共同点及区别:
1、 truncate和 delete只删除数据不删除表的结构(定义) 。
2、delete语句是dml,这个 *** 作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。
truncate是ddl, *** 作立即生效,原数据不放到rollback segment中,不能回滚 *** 作不触发trigger。
3、delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 。truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始)。
4、速度,一般来说: truncate >delete 。
参考资料:
百度百科--Truncate Table
百度百科--DELETE语句
alter
table
表名
drop
index
索引名;
所以不想每次只删除一个所以然后再重建一次索引,我想一次性删除那些多余的索引,这样索引只需要重建一次
----------------------
你这话有问题说明你对其机制理解有误
mysql下不同存储引擎索引的组织方式有点不同的
如果你是myisam,可以一个个直接删除
如果你是innodb的,则应先删除非主键索引,到最后才删除主键索引
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)