MySQL删除表的三种⽅式
1、drop table
drop 是直接删除表信息,速度最快,但是⽆法回数据
例如删除 user 表:
drop table user;
2、truncate table
truncate 是删除表数据,不删除表的结构,速度排第⼆,但不能与where⼀起使⽤
例如删除 user 表:
truncate table user;
3、delete from
delete 是删除表中的数据,不删除表结构,速度最慢,但可以与where连⽤,可以删除指定的⾏
例如删除user表的所有数据
delete from user;
删除user表的指定记录
delete from user where user_id = 1;
三种⽅式的区别
相同点
truncate和不带where⼦句的delete,drop都会删除表内的数据;
drop,truncate都是DDL语句(数据定义语⾔),执⾏后会⾃动提交;
不同点
语句类型:delete语句是数据库操作语⾔(DML),truncate,drop是数据库定义语⾔(DDL);
效率:⼀般来说 drop > truncate> delete;
是否删除表结构:truncate和delete 只删除数据不删除表结构,truncate 删除后将重建索引(新插⼊数据后id从0开始记起),⽽ delete不会删除索引(新插⼊的数据将在删除数据的索引后继续增加),drop语句将删除表的结构包括依赖的约束,触发器,索引等;
安全性:drop和truncate删除时不记录MySQL⽇志,不能回滚,delete删除会记录MySQL⽇志,可以回滚;
返回值:delete 操作后返回删除的记录数,⽽ truncate 返回的是0或者-1(成功则返回0,失败返回-1);
⼩知识
delete 与 delete from 区别
如果只针对⼀张表进⾏删除,则效果⼀样;如果需要联合其他表,则需要使⽤from
delete tb1 from tb1 m where id in (select id from tb2);
⽤法总结
1. 希望删除表结构时,⽤ drop;
mysql中delete语句
2. 希望保留表结构,但要删除所有记录时,⽤ truncate;
3. 希望保留表结构,但要删除部分记录时,⽤ delete。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论