DROP、DELETE与TRUNCATE
DROP、DELETE与TRUNCATE
DROP、DELETE和TRUNCATE都是SQL中用于删除数据的命令,但它们的作用和使用场景不同。
DROP
- 语法:
DROP TABLE 表名 - 作用:完全删除整个表,包括表结构、数据、索引、触发器、约束等所有相关对象
- 使用场景:当表不再需要时使用
DELETE
- 语法:
DELETE FROM 表名 WHERE 条件 - 作用:删除表中满足条件的行,不带WHERE子句会删除表中所有行,但表结构和相关对象仍然存在
- 特点:自增字段(AUTO_INCREMENT)不会重置,继续从之前的值递增
- 使用场景:当需要删除特定数据时使用
TRUNCATE
- 语法:
TRUNCATE TABLE 表名 - 作用:删除表中所有行,但保留表结构和相关对象
- 特点:自增字段会重置,下一次插入会从1开始
- 使用场景:当需要快速清空表数据但保留表结构时使用
对表结构的影响
DROP:删除表结构和所有数据DELETE:保留表结构,删除数据TRUNCATE:保留表结构,删除数据
触发器
DELETE会触发DELETE触发器TRUNCATE和DROP不会触发DELETE触发器
事务和回滚
DROP:属于DDL操作,不能回滚DELETE:属于DML操作,可以回滚TRUNCATE:属于DDL操作,不能回滚- 注:
- DML:数据库操作语言(Data Manipulation Language),是指对数据库中表记录的操作,主要包括表记录的插入、更新、删除和查询,是开发人员日常使用最频繁的操作。
- DDL:数据定义语言(Data Definition Language),是对数据库内部的对象进行创建、删除、修改的操作语言。它和DML语言的最大区别是DML只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。DDL语句更多的被数据库管理员(DBA)所使用,一般的开发人员很少使用。
