# 1. 删除满足条件的特定数据行(强烈建议DML操作始终附带 WHERE 子句) delete from 表名 where 条件;
# 2. 删除表内所有数据(DML操作,逐行删除并记录日志,支持事务回滚,但效率极低) delete from 表名;
-- 【底层机制】:属于数据操纵语言(DML)。执行时会在缓冲池中逐行删除记录,并将每一行的删除操作写入事务日志(Undo/Redo Log),因此执行效率较低,但在事务提交前支持回滚(Rollback)。 -- 【自增 ID 行为:保留状态】:不会重置 AUTO_INCREMENT 自增计数器。后续新插入的数据行,其 ID 会继续沿用被删除数据的最大 ID 号向后递增,产生 ID 断层。
1 2 3 4
# 3. 清空表数据(DDL操作,实质是销毁旧表并重建新表,不可回滚,但执行速度极快) truncate table 表名; -- 【底层机制】:属于数据定义语言(DDL)。实质是直接释放表所占用的数据页(Data Pages)并重新初始化表结构,不记录单行删除的事务日志。因此执行速度极快,但操作不可回滚。 -- 【自增 ID 行为:彻底重置】:会完全重置 AUTO_INCREMENT 计数器。后续新插入的数据行,其 ID 将重新从定义表的初始值(通常为 1)开始重新编号。
4.3.3 查
查询操作是数据库中最复杂、使用频率最高的模块。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 1. 查询表中所有列数据(生产环境中应严禁使用 *,建议明确指定列名以降低内存与网络开销) select * from 表名;
# 2. 查询特定字段 select 字段1, 字段2 from 表名;
# 3. 基础条件筛选查询 select 字段1 from 表名 where 字段2 = '指定值';
# 4. 排序查询(asc 默认升序,desc 降序排列) select * from 表名 order by 排序字段名 desc;
# 5. 分页查询/限制返回行数(常用于海量数据下的截断读取,offset为偏移量,rows为返回条数) select * from 表名 limit offset, rows;
# 6. 多表联合查询(以左外连接为例,获取主表全量数据及关联表的匹配数据) select a.字段, b.字段 from 表A a left join 表B b on a.关联id = b.id;
4.3.4 改
更新表内已存在的数据行的具体字段值。
1 2 3 4 5 6 7 8
# 更新指定条件的数据行 update 表名 set 字段1 = 新值1, 字段2 = 新值2 where 条件; 或者 update 库名.表名 set 字段=值 where 条件
# 警告示例:若省略 where 子句,将导致全表该字段数据被覆盖(极度危险) update 表名 set 字段1 = 新值1;