在 MySQL 中,ALTER 与 UPDATE、DROP 与 DELETE 是两组容易混淆的命令,它们的作用和使用场景有本质区别:
1. ALTER 与 UPDATE 的区别
两者都用于"修改",但修改的对象完全不同:
| 命令 | 作用对象 | 功能描述 | 示例 |
|---|---|---|---|
ALTER |
数据库对象结构(表、列等) | 修改数据库或表的结构(如添加/删除列、修改字段类型、重命名表等) | ALTER TABLE users ADD COLUMN age INT;(给 users 表添加 age 列) |
UPDATE |
表中的数据 | 修改表中已有记录的数据(不改变表结构) | UPDATE users SET age = 20 WHERE id = 1;(更新 id=1 的用户年龄) |
核心区别 :
ALTER 操作的是"表的结构"(元数据),而 UPDATE 操作的是"表中的数据"(内容)。
2. DROP 与 DELETE 的区别
两者都用于"删除",但删除的对象和效果不同:
| 命令 | 作用对象 | 功能描述 | 示例 |
|---|---|---|---|
DROP |
数据库对象(表、库、索引等) | 彻底删除整个数据库对象(如删除表、库、索引),释放所有相关资源 | DROP TABLE users;(删除整个 users 表,包括结构和数据) |
DELETE |
表中的数据 | 删除表中部分或全部记录 (保留表结构),可以配合 WHERE 条件 |
DELETE FROM users WHERE age < 18;(删除 age<18 的用户记录) |
其他重要区别:
- 恢复性 :
DELETE删除的数据可以通过事务回滚(ROLLBACK)恢复;DROP是立即释放资源,无法回滚。 - 性能 :
DROP TABLE比DELETE FROM table(删除全表数据)速度快,因为DROP直接删除表结构,而DELETE需要逐行删除记录。 - 自增列 :
DELETE全表数据后,自增列(AUTO_INCREMENT)的计数器不会重置;DROP表后重建,计数器会重置。
总结
- 改结构用
ALTER,改数据用UPDATE; - 删对象(表/库)用
DROP,删记录用DELETE。
使用时需特别注意 DROP 和 DELETE 的危险性,避免误操作导致数据丢失。