drop table 表名,直接将表都删除掉,在删除表结构的时候使用;delete from 表名 where 列名=值,删除某一行的数据,如果不加 where 子句,作用和 truncate table 表名类似;truncate table 表名,只删除表中的数据,再插入数据的时候子增长 id 又从 1 开始,在清空表中数据的时候使用;truncate 和 不带 where 子句的 delete,以及 drop 都会删除表内的数据,但 truncate 和 delete 只删除数据不删除表的结构,执行 drop 语句,此表的结构也会被删除。
truncate 和 drop 都属于 DDL(数据定义语言)语句,操作立即生效。
delete 语句是 DML(数据库操作语言)语句,这个操作会放到 rollback segement 中,事务提交之后才生效。
由于
select不会对表进行破坏,所以有的地方也会把select单独区分开叫做数据库查询语言(Data Query Language)
一般来说,drop -> truncate -> delete
binlog 日志,而日志记录是需要消耗时间的,好处就是方便数据回滚;delete 要快。除此之外,还会把表的自增值重置和索引恢复到初始大小等;