今天完成了数据库的“增、删、改”操作,至此数据库最核心的增删改查已全部跑通。
代码执行后,通过 Navicat 刷新验证,数据确实发生了变化。
一、今日核心代码
javascript
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
port: 3307,
user: "root",
password: "you_password",//自己的端口密码
database: "drone_platform",
});
// 1. 增(INSERT)
const insertSql = "INSERT INTO users (name) VALUES (?)";
connection.query(insertSql, ["张三"], (err, results) => {
if (err) throw err;
console.log("插入成功,新ID:", results.insertId);
});
// 2. 改(UPDATE)
const updateSql = "UPDATE users SET name = ? WHERE id = ?";
connection.query(updateSql, ["李四", 1], (err, results) => {
if (err) throw err;
console.log("更新成功,影响行数:", results.affectedRows);
});
// 3. 删(DELETE)
const deleteSql = "DELETE FROM users WHERE id = ?";
connection.query(deleteSql, [4], (err, results) => {
if (err) throw err;
console.log("删除成功,影响行数:", results.affectedRows);
});
connection.end();
二、核心概念速查
| 概念 | 说明 |
|---|---|
results.insertId | mysql2 自带的属性,INSERT 成功后返回新生成的自增 id |
results.affectedRows | mysql2 自带的属性,UPDATE/DELETE 成功后返回受影响的行数 |
? 占位符 | 用于安全传递参数,避免 SQL 注入,多个 ? 用数组 [值1, 值2] 按顺序对应 |
connection.end() | 关闭数据库连接,否则 Node.js 进程不会自动退出 |
三、今日踩坑 & 解决
| 坑 | 原因 | 解决 |
|---|---|---|
| 更新语句不生效 | ["李四,1"] 写成了单个字符串 | 改成两个独立值 ["李四", 1] |
results.affectRows 报错 | 拼写错误,少了一个 c 一个 t | 正确写法:affectedRows |
| 控制台打印“插入成功”但实际是更新操作 | 复制粘贴后忘记改日志文案 | 仔细检查 console.log 内容 |
| 终端卡住,无法输入新命令 | JS 主线程卡死,但之前的数据库操作已完成 | 按 Ctrl + C 强制终止,或关闭重开终端 |
删除后 id 不连续 | MySQL 的 AUTO_INCREMENT 默认不会重用已删除的 id | 不用管,开发/学习阶段不影响功能 |
四、增删改查(CRUD)完整对照表
| 操作 | SQL | mysql2 返回的关键属性 |
|---|---|---|
| 查 | SELECT * FROM users WHERE id = ? | results(数组) |
| 增 | INSERT INTO users (name) VALUES (?) | results.insertId |
| 改 | UPDATE users SET name = ? WHERE id = ? | results.affectedRows |
| 删 | DELETE FROM users WHERE id = ? | results.affectedRows |
五、关于“学习方法的再思考”
现状: 我现在的学习方式是比着代码抄,抄的过程中想逻辑、加注释,跑通后问 AI ,最后汇总博客。但“闭卷写”对我来说难度太高,容易焦虑。
结论:
- “抄”不是问题,关键是 “抄的过程中在理解” 。能解释清楚每一行的含义,就达到了学习的目的。
- “闭卷写”是肌肉记忆的结果,不是前提。等抄的遍数足够多、理解足够深,自然会过渡到独立写。
- 当前方法(抄 → 跑 → 问 → 总结)适合填鸭式教学的补充,更适合“以项目为终点”的学习节奏。