第21天:增删改查(CRUD)完整闭环

2 阅读2分钟

今天完成了数据库的“增、删、改”操作,至此数据库最核心的增删改查已全部跑通。
代码执行后,通过 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.insertIdmysql2 自带的属性,INSERT 成功后返回新生成的自增 id
results.affectedRowsmysql2 自带的属性,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)完整对照表

操作SQLmysql2 返回的关键属性
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 ,最后汇总博客。但“闭卷写”对我来说难度太高,容易焦虑。

结论:

  • “抄”不是问题,关键是  “抄的过程中在理解” 。能解释清楚每一行的含义,就达到了学习的目的。
  • “闭卷写”是肌肉记忆的结果,不是前提。等抄的遍数足够多、理解足够深,自然会过渡到独立写。
  • 当前方法(抄 → 跑 → 问 → 总结)适合填鸭式教学的补充,更适合“以项目为终点”的学习节奏。