在 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
的危险性,避免误操作导致数据丢失。