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. 成功すると、更新された行数をログします。

忘れないでください、WHERE句を必ず二度見してください。WHERE句無しでUPDATEステートメントを実行すると、誤ってテーブルのすべてのレコードを更新してしまう可能性があります!

プリペアードステートメントを使用した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インジェクション攻撃から守ってくれます。

プリペアードステートメントは、マッドリブスゲームのようです - まず構造を作成し、後でブランクを埋めます!

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. booksテーブルをauthorsテーブルにauthor_idフィールドを使用してJOINします。
  2. 著者の国籍が'British'のすべての本の価格を10%(1.1倍)増加させます。
  3. この更新は、関連するテーブル間で複数の行に影響を与えます!

これは、2つのテーブルが協調して情報を更新するダンスのようなものです!

UPDATEメソッドの比較

让我们来总结一下我们的方法在一个方便的表格中:

メソッド 利点 欠点 最適な使用时机
シンプルなUPDATE 理解しやすく、実装が簡単 SQLインジェクションに弱い 快速な一括更新
プリペアードステートメント SQLインジェクションに強い、再利用可能 設定が少し複雑 異なる値で繰り返し更新
UPDATE JOIN 他のテーブルのデータに基づいて更新 クエリ構造が複雑 他のテーブルの関連情報に基づいてデータを更新

結論

そして、皆さん!Node.jsとMySQLの更新の地を旅しました。シンプルな変更から複数テーブル間の複雑な操作まで。忘れないでください、強力な力には大きな責任が伴います - WHERE句を常に二度見し、ユーザー入力を扱う際にはプリペアードステートメントを使用してください。

これらの技術を練習し、速くデータベースを更新できるようになるまで続けてください!コードを続け、学び続け、最も重要なのは、楽しむことです。次回までに、あなたのクエリが速く、データベースがバグフリーでありますように!

Credits: Image by storyset