mysql如何删除数据_MySQL中删除数据的两种⽅法
1. 在MySQL中有两种⽅法可以删除数据:
⼀种是delete语句,另⼀种是truncate table语句。
delete语句可以通过where对要删除的记录进⾏选择,⽽使⽤truncate table将删除表中的所有记录。因此,delete语句更灵活。
2. 如果要清空表中的所有记录,可以使⽤下⾯的两种⽅法:
delete fromtable1
truncate table table1
备注:其中第⼆条记录中的table是可选的。
如果要删除表中的部分记录,只能使⽤delete语句。
delete from table1 where ...;
如果delete不加where⼦句,那么它和truncate table是⼀样的,但它们有⼀点不同,那就是delete可以返回被删除的记录数,⽽truncate table返回的是0。
3. 关于⾃增字段:mysql中delete语句
如果⼀个表中有⾃增字段,使⽤truncate table和没有WHERE⼦句的delete删除所有记录后,这个⾃增字段将起始值恢复成1.如果你不想这样做的话,可以在delete语句中加上永真的where,如where 1或where true。
delete from table1 where 1;
解析:上⾯的语句在执⾏时将扫描每⼀条记录。但它并不⽐较,因为这个where条件永远为true。这样做虽然可以保持⾃增的最⼤值,但由于它是扫描了所有的记录,因此,它的执⾏成本要⽐没有where⼦句的delete⼤得多。
4. delete和truncate table的最⼤区别是:
delete可以通过where语句选择要删除的记录,但执⾏得速度不快,⽽且还可以返回被删除的记录数;
⽽truncate table⽆法删除指定的记录,⽽且不能返回被删除的记录,但它执⾏得⾮常快。
5.和标准的SQL语句不同:
delete⽀持order by和limit⼦句,通过这两个⼦句,我们可以更好地控制要删除的记录。如当我们只想删除where⼦句过滤出来的记录的⼀部分,可以使⽤limit,如果要删除后⼏条记录,可以通过order by和limit配合使⽤。
假设我们要删除users表中name等于"Mike"的前6条记录。可以使⽤如下的DELETE语句:
delete from users where name = 'Mike' limit 6;
注:⼀般MySQL并不确定删除的这6条记录是哪6条,为了更保险,我们可以使⽤ORDER BY对记录进⾏排序。
delete from users where name = 'Mike' order by id desc limit 6;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。