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) updated2. 結果オブジェクト (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