NodeJS 速習チュートリアル

Node.js MySQL データの削除

1. レコードの削除

DELETE FROM ステートメントを使用することで、既存のテーブルから特定のレコードを削除することが可能です。

1.1 実装例:「address」が 'Mountain 21' のレコードを削除する

以下のコードは、customers テーブルから特定の条件に合致するデータを削除する例です。

let mysql = require('mysql');

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

con.connect(function(err) {
  if (err) throw err;
  
  // 削除用のSQL文:addressが 'Mountain 21' のものを対象とする
  let sql = "DELETE FROM customers WHERE address = 'Mountain 21'";
  
  con.query(sql, function (err, result) {
    if (err) throw err;
    // 削除されたレコード数を表示
    console.log("削除されたレコード数: " + result.affectedRows);
  });
});

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

1.2 プログラムの実行

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

demo_db_delete.js の実行

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

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

Number of records deleted: 1

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

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

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

{
  fieldCount: 0,
  affectedRows: 1,    // 削除された行数
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

これらのプロパティにアクセスすることで、操作の結果をアプリケーション側でハンドリングできます。

2.1 影響を受けた行数の確認

例えば、実際に何件のデータが削除されたかを確認するには、affectedRows プロパティを参照します。

console.log(result.affectedRows);

出力結果:

1