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テーブルからレコードを削除するには、以下の手順に従います。
- 削除処理用のapp.jsファイルを作成します。
- 後述のコードスニペットをファイルにコピー&ペーストします。
- 次のコマンドでコードを実行します。
>> 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句の条件を必ず確認するようにしましょう。
-
MySQLテーブルからすべてのレコードを削除する方法|TRUNCATE文の使い方を解説
MySQLテーブルからすべてのレコードを削除する方法 MySQLのテーブルからすべてのレコードを削除したい場合は、TRUNCATE文を使用します。TRUNCATEはテーブル内の全行を高速に削除できるコマンドで、大量のデータを扱う場合に特に有効です。 TRUNCATE文の基本構文 TRUNCATE TABLE テーブル名; この構文を実行すると、指定したテーブルからすべてのレコードが削除されます。実際の動作を確認するために、サンプルテーブルを作成してみましょう。 サンプルテーブルの作成 まず、以下のクエリでテーブルを作成します。 mysql> create table DeleteAl
-
JavaのPreparedStatementを使ってMySQLテーブルにレコードを挿入する方法
JavaのPreparedStatementを使用してMySQLのテーブルにレコードを挿入するには、まずINSERT文の雛形を作成し、値の部分をプレースホルダー(?)で置き換えます。SQLインジェクション対策やパフォーマンス向上の観点からも、この方法は推奨されています。1. INSERT文の基本構文レコード挿入用のSQLは、以下のような構文で記述します。String anyVariableName = INSERT INTO yourTableName(yourColumnName1, yourColumnName2, yourColumnName3, ...N) + VALUES (?, ?