Node.js - MySQL 更新操作

你好啊,未来的编程巨星!今天,我们将一起探索Node.js和MySQL更新的精彩世界。别担心如果你是新手——我会作为你的友好向导,带你完成这次冒险。在本教程结束时,你将能够像专业人士一样更新数据库!

Node.js - MySQL Update

理解基础

在我们跳入代码之前,让我们先聊聊我们到底在做什么。当我们谈论在MySQL中“更新”时,我们实际上是在更改数据库中现有的数据。这就像编辑一个文档,但不是Word文件,我们在充满信息的数据库中进行操作。

简单的UPDATE操作

让我们从一个简单的更新开始。想象你有一个你最喜欢的书的数据库,你想更改其中一本书的评分。

下面是如何操作的:

const mysql = require('mysql');

// 首先,我们创建一个到我们数据库的连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});

// 现在,让我们连接!
connection.connect((err) => {
if (err) throw err;
console.log('已连接到数据库!');

// 这是我们的UPDATE查询
let sql = "UPDATE books SET rating = 5 WHERE title = 'The Great Gatsby'";

// 让我们执行这个查询
connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " 条记录被更新");
});
});

让我们分解一下:

  1. 我们从要求MySQL模块开始,并创建到我们数据库的连接。
  2. 我们使用UPDATE SQL命令将标题为'The Great Gatsby'的书的评分更改为5。
  3. 我们使用connection.query()执行查询。
  4. 如果成功,我们记录我们的更新影响了多少行。

记住,总是在UPDATE语句中仔细检查WHERE子句。没有它,你可能会不小心更新表中的每条记录!

使用预处理语句的UPDATE

现在,让我们提升一下我们的游戏,使用预处理语句。这些就像是我们SQL查询的可重用模板,使我们的代码更安全、更高效。

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});

connection.connect((err) => {
if (err) throw err;
console.log('已连接到数据库!');

// 我们的预处理语句
let sql = "UPDATE books SET rating = ? WHERE title = ?";
let values = [4, 'To Kill a Mockingbird'];

// 执行预处理语句
connection.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " 条记录被更新");
});
});

在这个例子中:

  1. 我们创建了一个带有占位符(?)的预处理语句,用于我们要更新的值。
  2. 我们提供这些值作为一个数组。
  3. MySQL会负责正确地转义这些值,保护我们免受SQL注入攻击。

把预处理语句想象成Mad Libs游戏——我们先创建结构,然后稍后填充空白!

UPDATE JOIN操作

有时,我们需要根据另一张表中的信息更新一张表的数据。这时UPDATE JOIN就派上用场了。假设我们想根据作者的国籍更新书籍的价格。

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});

connection.connect((err) => {
if (err) throw err;
console.log('已连接到数据库!');

let sql = `
UPDATE books b
JOIN authors a ON b.author_id = a.id
SET b.price = b.price * 1.1
WHERE a.nationality = 'British'
`;

connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " 条记录被更新");
});
});

这里发生了什么:

  1. 我们使用author_id字段将books表和authors表进行JOIN。
  2. 我们将所有作者国籍为'British'的书籍价格提高10%(乘以1.1)。
  3. 这个更新一次就可以影响多个相关表的多个行!

把这种更新想象成两个表的协调舞蹈——它们一起移动来更新我们需要的信息。

UPDATE方法比较

让我们在我们的方法中总结一下:

方法 优点 缺点 最佳使用场景
简单UPDATE 易于理解和实现 如果不小心容易受到SQL注入攻击 进行快速的一次性更新
预处理语句 对SQL注入更安全,可以重用 设置稍微复杂一些 进行重复更新,且值不同
UPDATE JOIN 可以根据其他表的数据更新 查询结构更复杂 需要根据其他表的相关信息更新数据

结论

就这样,大家!我们一起穿越了Node.js和MySQL更新的领域,从简单的更改到复杂的多表操作。记住,能力越大,责任越大——总是仔细检查你的WHERE子句,并在处理用户输入时使用预处理语句。

练习这些技巧,很快你就能比说“SQL”还快地更新数据库!继续编码,继续学习,最重要的是,享受其中的乐趣。下次见,愿你的查询速度快,数据库无错误!

Credits: Image by storyset