DML语言

MySQL 数据操作语言(DML)核心笔记

数据操作语言(DML)用于对数据库表中的数据进行增、删、改操作,是日常开发最常用的核心语法,包含 INSERTUPDATEDELETE 三大指令。


一、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);

核心注意事项

  1. 分隔符规范:字段与字段、值与值之间,必须使用英文逗号 , 分隔;
  2. 字段可省略:省略字段时,VALUES 后的值必须和表字段顺序、数量完全一一对应
  3. 批量插入:支持一次性插入多条数据,VALUES 后用 , 分隔多组值,格式:VALUES(),(),()
  4. 关键字规避:表名、字段名建议用反引号 ` 包裹,避免与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='李四' 满足一个条件即可

核心注意事项

  1. 表名、字段名尽量用反引号 ` 包裹;
  2. WHERE 是筛选核心,无条件必全表修改,操作前务必核对;
  3. 修改多个字段时,赋值语句之间用英文逗号 , 分隔;
  4. 赋值支持:具体数据、字段、系统函数/变量。

三、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 后重启数据库,自增列延续之前计数(数据存在文件,持久化)。

核心总结

  1. INSERT:核心是字段与值一一对应,支持批量插入,符号必须为英文格式;
  2. UPDATE:核心是WHERE 条件筛选,无条件会全表修改,多字段用逗号分隔;
  3. DELETE:删除指定/全部数据,保留自增计数;
  4. TRUNCATE:清空全表数据,重置自增计数,效率更高;
  5. 通用规范:表名、字段名用反引号 ` 包裹,所有标点符号必须为英文格式
posted @ 2026-04-09 22:11  果子同志  阅读(37)  评论(0)    收藏  举报