MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

Node.jsでMySQLのレコードを削除する方法を解説

はじめに

データベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。

Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。

  • 静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。
  • 動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。

事前準備

作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。

mkdir mysql-test
cd mysql-test
npm init -y
npm install mysql

上記の手順は、プロジェクトフォルダにNode.js用のmysqlパッケージ(依存モジュール)をインストールするためのものです。

studentテーブルからレコードを削除する手順

MySQLテーブルからレコードを削除するには、以下の手順に従います。

  1. 削除処理用のapp.jsファイルを作成します。
  2. 後述のコードスニペットをファイルにコピー&ペーストします。
  3. 次のコマンドでコードを実行します。
>> node app.js

例1: 条件を固定して削除する(静的な削除)

まずは、SQL文に条件を直接記述して削除する基本的な例です。

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "localhost",
    user: "yourusername",
    password: "yourpassword",
    database: "mydb"
});

con.connect(function(err) {
    if (err) throw err;

    // address="Delhi" のレコードを削除
    var sql = "DELETE FROM student WHERE address = 'Delhi';";
    con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("Record deleted = ", result.affectedRows);
        console.log(result);
    });
});

出力結果

Record deleted = 1
OkPacket {
    fieldCount: 0,
    affectedRows: 1, // 削除されたレコード数
    insertId: 0,
    serverStatus: 34,
    warningCount: 0,
    message: '',
    protocol41: true,
    changedRows: 0
}

例2: プレースホルダを使った動的な削除

次の例では、addressフィールドの値をプレースホルダ「?」として渡し、条件に一致するレコードのみを削除します。外部からの入力値を扱う場合、この書き方はSQLインジェクション対策としても推奨されます。

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "localhost",
    user: "yourusername",
    password: "yourpassword",
    database: "mydb"
});

con.connect(function(err) {
    if (err) throw err;

    // テーブルから対象のレコードを削除
    let sql = `DELETE FROM student WHERE address = ?`;
    // address=Delhi の行を削除
    con.query(sql, 'Delhi', (err, result, fields) => {
        if (err) throw err;
        console.log("Record deleted = ", result.affectedRows);
        console.log(result);
    });
});

出力結果

OkPacket {
    fieldCount: 0,
    affectedRows: 3, // address=Delhi に一致した3行が削除された
    insertId: 0,
    serverStatus: 34,
    warningCount: 0,
    message: '',
    protocol41: true,
    changedRows: 0
}

まとめ

このように、Node.jsのmysqlパッケージを使えば、「DELETE FROM」ステートメントで簡単にレコードを削除できます。条件が固定の場合はSQL文に直接記述し、動的に値を渡す場合はプレースホルダ「?」を使用すると安全です。なお、削除処理は一度実行すると元に戻せないため、実行前にはWHERE句の条件を必ず確認するようにしましょう。

  1. MySQLテーブルからすべてのレコードを削除する方法|TRUNCATE文の使い方を解説

    MySQLテーブルからすべてのレコードを削除する方法 MySQLのテーブルからすべてのレコードを削除したい場合は、TRUNCATE文を使用します。TRUNCATEはテーブル内の全行を高速に削除できるコマンドで、大量のデータを扱う場合に特に有効です。 TRUNCATE文の基本構文 TRUNCATE TABLE テーブル名; この構文を実行すると、指定したテーブルからすべてのレコードが削除されます。実際の動作を確認するために、サンプルテーブルを作成してみましょう。 サンプルテーブルの作成 まず、以下のクエリでテーブルを作成します。 mysql> create table DeleteAl

  2. JavaのPreparedStatementを使ってMySQLテーブルにレコードを挿入する方法

    JavaのPreparedStatementを使用してMySQLのテーブルにレコードを挿入するには、まずINSERT文の雛形を作成し、値の部分をプレースホルダー(?)で置き換えます。SQLインジェクション対策やパフォーマンス向上の観点からも、この方法は推奨されています。1. INSERT文の基本構文レコード挿入用のSQLは、以下のような構文で記述します。String anyVariableName = INSERT INTO yourTableName(yourColumnName1, yourColumnName2, yourColumnName3, ...N) + VALUES (?, ?