数据增删改查(DML)
熟练掌握 INSERT、UPDATE、DELETE、SELECT 四大语句
掌握条件、排序、分页、去重等查询操作
能编写常见业务的 SQL 语句
核心讲解
(1)INSERT 插入
-- 插入单条
INSERT INTO 表名(字段1,字段2) VALUES (值1,值2);
-- 批量插入
INSERT INTO 表名(字段) VALUES
(值1),
(值2),
(值3);
-- 插入查询结果
INSERT INTO 表 SELECT ... FROM 其他表;
(2)UPDATE 更新
UPDATE 表名 SET 字段1=值1, 字段2=值2 WHERE 条件;
注意:必须加 WHERE 条件,不然会更新全表!
(3)DELETE 删除
DELETE FROM 表名 WHERE 条件;
注意:必须加 WHERE 条件,不然删除全表!
(4)SELECT 查询
SELECT 字段列表
FROM 表名
WHERE 条件
GROUP BY 分组字段
HAVING 分组后条件
ORDER BY 排序字段 ASC/DESC
LIMIT 数量 OFFSET 偏移;
执行顺序:FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
(5)常用运算符
比较:
=!=><>=<=逻辑:
ANDORNOT模糊:
LIKE,%匹配任意,_匹配单个范围:
BETWEEN ... AND ...集合:
IN (值1,值2...)空判断:
IS NULL/IS NOT NULL
代码示例
-- 准备数据
INSERT INTO student(stu_no, name, age, gender) VALUES
('S001', '张三', 20, '男'),
('S002', '李四', 19, '女'),
('S003', '王五', 21, '男'),
('S004', '赵六', 18, '女'),
('S005', '钱七', 22, '男');
-- 1. 基础查询:查询所有
SELECT * FROM student;
-- 2. 指定字段
SELECT name, age FROM student;
-- 3. 条件查询:年龄大于20的男生
SELECT * FROM student WHERE age > 20 AND gender = '男';
-- 4. 模糊查询:姓张的
SELECT * FROM student WHERE name LIKE '张%';
-- 5. 排序:按年龄降序
SELECT * FROM student ORDER BY age DESC;
-- 6. 分页:每页2条,第2页
SELECT * FROM student ORDER BY id LIMIT 2 OFFSET 2;
-- 7. 更新:张三年龄+1
UPDATE student SET age = age + 1 WHERE name = '张三';
-- 8. 删除:删除S004
DELETE FROM student WHERE stu_no = 'S004';
-- 9. 聚合统计
SELECT
COUNT(*) AS 总人数,
AVG(age) AS 平均年龄,
MAX(age) AS 最大年龄,
MIN(age) AS 最小年龄
FROM student;
-- 10. 分组统计:按性别统计人数
SELECT gender, COUNT(*) AS 人数
FROM student
GROUP BY gender;
常见误区
更新 / 删除不加 WHERE:会全表更新 / 删除,生产事故高频原因,写的时候先写 WHERE 再写前面
NULL 用 = 判断:NULL 不能用 = 判断,必须用 IS NULL / IS NOT NULL
ORDER BY 和 LIMIT 顺序错:ORDER BY 在 LIMIT 前面,不然分页排序错
SELECT 里字段不用分组:GROUP BY 之后,SELECT 里只能是分组字段和聚合函数
课后练习
向学生表再插入 5 条测试数据
查询年龄在 18-21 之间的女生,按年龄升序
统计每个年龄段的人数
实现分页:每页 3 条,查询第 2 页

