DML语言
MySQL 数据操作语言(DML)核心笔记
数据操作语言(DML)用于对数据库表中的数据进行增、删、改操作,是日常开发最常用的核心语法,包含 INSERT、UPDATE、DELETE 三大指令。
一、INSERT 插入语句(添加数据)
用于向数据表中新增一条/多条记录。
基础语法
-- 标准写法(推荐)
INSERT INTO 表名([字段1], [字段2], [字段3])
VALUES('字段1值1', '字段2值1', '字段3值1'),
('字段1值2', '字段2值2', '字段3值2'),
('字段1值3', '字段2值3', '字段3值3');
实操示例
-- 向 student 表插入多条数据,支持 DEFAULT 使用字段默认值
INSERT INTO `student`(`name`, `pwd`, `sex`)
VALUES ('李四', 'aaaaaa', '男'),
('李悦', 'rfgas', DEFAULT);
核心注意事项
- 分隔符规范:字段与字段、值与值之间,必须使用英文逗号
,分隔; - 字段可省略:省略字段时,
VALUES后的值必须和表字段顺序、数量完全一一对应; - 批量插入:支持一次性插入多条数据,
VALUES后用,分隔多组值,格式:VALUES(),(),(); - 关键字规避:表名、字段名建议用反引号
`包裹,避免与MySQL关键字冲突。
二、UPDATE 修改语句(更新数据)
用于修改数据表中已存在的记录。
基础语法
UPDATE 表名
SET 字段名1 = 值1, 字段名2 = 值2, ......
WHERE 筛选条件;
常用示例
-- 1. 单条件修改单个字段(指定 id=1 的学员姓名)
UPDATE `student` SET `name`='猪猪侠' WHERE id = 1;
-- 2. 批量修改多个字段(逗号分隔多个赋值语句)
UPDATE `student` SET `name`='猪猪侠', `email`='2981367375@qq.com' WHERE id = 1;
-- 3. 多条件精准定位数据
UPDATE `student` SET `name`='猪猪侠' WHERE `name`='小菲菲' AND `sex`='女';
-- 4. 使用系统函数赋值
UPDATE `student` SET `birthday`= CURRENT_TIME WHERE `name`='小菲菲';
⚠️ 高危警告
不指定 WHERE 条件,会修改表中所有行数据!
-- 危险操作:全表修改所有学员姓名
UPDATE `student` SET `name`='小菲菲';
WHERE 条件常用运算符
用于精准筛选需要修改的数据,支持多条件组合:
| 操作符 | 含义 | 示例 | 说明 |
|---|---|---|---|
= |
等于 | id = 1 |
精准匹配 |
<> / != |
不等于 | sex <> '男' |
排除指定数据 |
> |
大于 | age > 18 |
数值比较 |
< |
小于 | score < 60 |
数值比较 |
>= |
大于等于 | age >= 20 |
数值比较 |
<= |
小于等于 | score <= 100 |
数值比较 |
BETWEEN...AND |
在指定区间内 | score BETWEEN 60 AND 90 |
闭区间,包含起止值 |
AND |
逻辑与(同时满足) | age>18 AND sex='男' |
多条件必须全部成立 |
OR |
逻辑或(满足其一) | name='张三' OR name='李四' |
满足一个条件即可 |
核心注意事项
- 表名、字段名尽量用反引号
`包裹; WHERE是筛选核心,无条件必全表修改,操作前务必核对;- 修改多个字段时,赋值语句之间用英文逗号
,分隔; - 赋值支持:具体数据、字段、系统函数/变量。
三、DELETE 删除语句(删除数据)
用于删除数据表中指定/全部记录,搭配 TRUNCATE 清空表使用。
1. DELETE 基础语法
-- 标准语法
DELETE FROM 表名 [WHERE 筛选条件];
2. 实操示例
-- ⚠️ 危险操作:不指定条件,删除表中所有数据
DELETE FROM `student`;
-- 安全操作:删除指定数据(推荐)
DELETE FROM `student` WHERE id = 1;
四、TRUNCATE 清空表语句
作用:完全清空数据表,保留表结构、索引、约束,仅删除所有数据。
语法
-- 清空 student 表所有数据
TRUNCATE `student`;
五、DELETE 与 TRUNCATE 核心区别
相同点
- 都能删除表中数据
- 都不会删除表结构
不同点
| 对比维度 | DELETE | TRUNCATE |
|---|---|---|
| 自增列 | 不会重置自增计数器 | 重置自增计数器,归零重新计数 |
| 事务支持 | 支持事务,可回滚 | 不支持事务,不可回滚 |
| 执行效率 | 逐行删除,效率较低 | 直接清空,效率极高 |
补充说明(引擎差异)
InnoDB:DELETE 后重启数据库,自增列从1开始(数据存在内存,断电丢失);MyISAM:DELETE 后重启数据库,自增列延续之前计数(数据存在文件,持久化)。
核心总结
- INSERT:核心是字段与值一一对应,支持批量插入,符号必须为英文格式;
- UPDATE:核心是WHERE 条件筛选,无条件会全表修改,多字段用逗号分隔;
- DELETE:删除指定/全部数据,保留自增计数;
- TRUNCATE:清空全表数据,重置自增计数,效率更高;
- 通用规范:表名、字段名用反引号
`包裹,所有标点符号必须为英文格式。

浙公网安备 33010602011771号