NodeJS 速習チュートリアル

Node.js MySQL データの更新

1. テーブルの更新

MySQLのテーブル内にある既存のレコードを更新するには、UPDATE ステートメントを使用します。

1.1 実装例:「address」カラムの書き換え

以下のコードは、address が「Valley 345」であるレコードを「Canyon 123」に上書きする例です。

let mysql = require('mysql');

// データベース接続設定
let con = mysql.createConnection({
  host: "localhost",
  user: "ユーザー名",     // あなたのMySQLユーザー名
  password: "パスワード", // あなたのMySQLパスワード
  database: "mydb"      // 操作対象のデータベース名
});

con.connect(function(err) {
  if (err) throw err;
  
  // UPDATE文:特定の条件に合致するレコードのaddressを更新
  let sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'";
  
  con.query(sql, function (err, result) {
    if (err) throw err;
    // 更新されたレコード数を表示
    console.log(result.affectedRows + " 件のレコードを更新しました");
  });
});

重要: UPDATE 構文における WHERE 句の扱いに注意してください。WHERE 句は「どのレコードを更新するか」を指定するためのものです。もし WHERE 句を省略した場合、テーブル内のすべてのレコードが更新されてしまいます。

1.2 プログラムの実行

上記の内容を demo_db_update.js というファイル名で保存し、実行してください。

demo_db_update.js の実行

C:\Users\Your Name>node demo_db_update.js

実行に成功すると、以下のような結果が表示されます。

1 record(s) updated

2. 結果オブジェクト (Result Object)

クエリを実行すると、結果オブジェクト(Result Object)が返されます。このオブジェクトには、そのクエリがテーブルに対してどのような影響を与えたかという詳細なメタデータが含まれています。

上記のアップデート処理を実行した際に返されるオブジェクトの内容は、以下のようになります。

{
  fieldCount: 0,
  affectedRows: 1,    // 条件にマッチした行数
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '(Rows matched: 1  Changed: 1  Warnings: 0',
  protocol41: true,
  changedRows: 1      // 実際に値が変更された行数
}

これらのプロパティにアクセスすることで、アプリケーション側で更新処理の成否や規模を正確に判定できます。

2.1 影響を受けた行数の取得

例えば、クエリによって影響を受けたレコード数を表示するには、affectedRows プロパティを参照します。

console.log(result.affectedRows);

出力結果:

1