
CRUD 是数据库操作的四大基本功:Create(创建)、Read(读取)、Update(更新)、Delete(删除)。
先创建一个示例表以便操作:
CREATE TABLE students (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age TINYINT UNSIGNED,
class VARCHAR(20),
score DECIMAL(5,2),
created_at DATETIME DEFAULT NOW()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;一、INSERT — 插入数据
插入单条记录
INSERT INTO students (name, age, class, score)
VALUES ('张三', 20, '计算机1班', 95.5);插入多条记录
INSERT INTO students (name, age, class, score) VALUES
('李四', 21, '计算机1班', 88.0),
('王五', 19, '计算机2班', 92.5),
('赵六', 22, '软件工程1班', 78.0),
('孙七', 20, '软件工程1班', 85.5);插入时指定字段(推荐)
-- 明确指定字段名,更安全、可读性更好
INSERT INTO students SET
name = '周八',
age = 21,
class = '计算机2班',
score = 90.0;提示 推荐始终指定字段名,这样即使表结构发生变化,SQL 语句也不会出错。
二、SELECT — 查询数据
查询所有
SELECT * FROM students;查询指定字段
SELECT name, age, score FROM students;条件查询 WHERE
-- 等于
SELECT * FROM students WHERE class = '计算机1班';
-- 大于
SELECT * FROM students WHERE score >= 90;
-- 范围 BETWEEN
SELECT * FROM students WHERE score BETWEEN 80 AND 90;
-- IN 列表
SELECT * FROM students WHERE class IN ('计算机1班', '软件工程1班');
-- LIKE 模糊匹配
SELECT * FROM students WHERE name LIKE '张%';排序 ORDER BY
-- 升序(默认)
SELECT * FROM students ORDER BY score;
-- 降序
SELECT * FROM students ORDER BY score DESC;
-- 多字段排序
SELECT * FROM students ORDER BY class ASC, score DESC;限制结果 LIMIT
-- 取前3条
SELECT * FROM students ORDER BY score DESC LIMIT 3;
-- 分页:跳过2条,取3条(第2页)
SELECT * FROM students ORDER BY id LIMIT 2, 3;三、UPDATE — 更新数据
注意 更新操作务必加 WHERE,否则更新全表!
-- 更新单条
UPDATE students SET score = 96.0 WHERE name = '张三';
-- 更新多条
UPDATE students SET score = score + 5 WHERE class = '计算机1班';
-- 多字段更新
UPDATE students
SET age = 21, score = 90.0
WHERE name = '李四';安全更新技巧
-- 先 SELECT 确认
SELECT * FROM students WHERE id = 1;
-- 再 UPDATE
UPDATE students SET score = 100 WHERE id = 1;
-- 使用 LIMIT 限制影响行数
UPDATE students SET score = 60 WHERE score < 60 LIMIT 1;四、DELETE — 删除数据
注意 删除操作务必加 WHERE,否则清空全表!
-- 删除单条
DELETE FROM students WHERE id = 5;
-- 条件删除
DELETE FROM students WHERE score < 60;
-- 清空表(重置自增ID)
TRUNCATE TABLE students;DELETE vs TRUNCATE vs DROP
| 操作 | 删除数据 | 保留结构 | 重置自增ID | 可回滚 |
|---|---|---|---|---|
DELETE | √ 条件删除 | √ | × | √ |
TRUNCATE | √ 全部删除 | √ | √ | × |
DROP | √ | × | — | × |
五、综合实战:学生成绩管理系统
-- 1. 插入测试数据
INSERT INTO students (name, age, class, score) VALUES
('小明', 20, '计算机1班', 91.0),
('小红', 19, '计算机1班', 87.5),
('小刚', 21, '软件工程2班', 76.0),
('小丽', 20, '软件工程2班', 95.0);
-- 2. 查询各班平均分
SELECT class, AVG(score) as avg_score, COUNT(*) as student_count
FROM students
GROUP BY class;
-- 3. 查询最高分
SELECT name, score FROM students ORDER BY score DESC LIMIT 1;
-- 4. 给不及格的加分
UPDATE students SET score = 60 WHERE score < 60;
-- 5. 删除成绩为空的学生
DELETE FROM students WHERE score IS NULL;六、注意事项
安全第一
| 规则 | 说明 |
|---|---|
| UPDATE 先 SELECT | 确认 WHERE 条件正确再更新 |
| 生产环境加 LIMIT 1 | 防止误操作影响大量数据 |
| 开启事务 | 重要操作使用 BEGIN + COMMIT |
| 备份先行 | 批量操作前先备份 |
使用事务保护数据
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- 如果中间出错,执行 ROLLBACK 回滚本篇小结
√ 掌握了 INSERT 插入数据的三种方式
√ 学会了 SELECT 查询的各种技巧(条件、排序、分页)
√ 理解了 UPDATE 和 DELETE 的安全操作规范
√ 知道了事务的基本使用场景
下一篇我们将学习 WHERE 条件、ORDER BY 排序、GROUP BY 分组 等查询进阶技巧!
还没有评论
第一条回复通常最容易开启一场有价值的讨论。