Dou*_*eux 19 mysql sql-delete sql-drop
我试图清理一个表,但没有摆脱表的实际结构.我有一个id自动递增的列; 我不需要保留ID号,但我确实需要它来保持其自动递增特性.我发现删除和截断,但我担心其中一个将完全删除整个表,使未来的插入命令无用.
如何从表中删除所有记录以便插入新数据?
chr*_*ris 22
drop table 将使用数据删除整个表
delete * from table将删除数据,仅保留自动增量值.如果表中有很多数据,它也需要一段时间.
truncate table 将删除数据,重置自动增量值(但将它们保留为自动增量列,因此它将从1开始并再次从那里上升),并且非常快.
dav*_*vek 14
TRUNCATE将重置您的自动增量种子(至少在InnoDB表上),尽管您可以在截断之前记下它的值,然后使用alter table进行相应的重新设置:
ALTER TABLE t2 AUTO_INCREMENT = value
Run Code Online (Sandbox Code Playgroud)
Drop会这样做....删除有问题的表,除非该表是另一个表的父表。
删除将删除所有符合条件的数据;如果没有指定条件,它将删除表中的所有数据。
截断类似于删除;但是,它会将 auto_increment 计数器重置回 1(或初始起始值)。但是,最好使用 truncate 而不是 delete ,因为delete会删除每一行的数据,因此比truncate 会降低性能。但是,除非在truncate之前将其关闭,否则truncate将不适用于强制执行参照完整性的InnoDB表命令发出。
所以,放松;除非您在桌子上发出drop命令,否则它不会被删除。