NodeJS 速習チュートリアル

Node.js MySQL テーブルの削除

1. テーブルの削除

DROP TABLE ステートメントを使用することで、既存のテーブルをデータベースから完全に削除することが可能です。

1.1 実装例:「customers」テーブルの削除

以下のコードは、指定したデータベースから「customers」テーブルを削除する例です。

let mysql = require('mysql');

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

con.connect(function(err) {
  if (err) throw err;
  
  // テーブルを削除するSQL文
  let sql = "DROP TABLE customers";
  
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("テーブル削除完了");
  });
});

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

demo_db_drop_table.js の実行

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

実行に成功すると、ターミナルに以下の結果が表示されます。

Table deleted

2. 存在する場合のみ削除する (Drop Only if Exist)

削除しようとしているテーブルがすでに削除されている場合や、何らかの理由で存在しない場合、そのまま DROP TABLE を実行するとエラーが発生します。これを回避するために、IF EXISTS キーワードを使用するのが一般的です。

2.1 実装例:安全なテーブル削除

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "ユーザー名",
  password: "パスワード",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  
  // テーブルが存在する場合のみ削除を実行するSQL文
  let sql = "DROP TABLE IF EXISTS customers";
  
  con.query(sql, function (err, result) {
    if (err) throw err;
    // 結果オブジェクトを表示
    console.log(result);
  });
});

上記の内容を demo_db_drop_table_if.js というファイル名で保存し、実行します。

demo_db_drop_table_if.js の実行

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

2.2 結果オブジェクトの差異

実行時、テーブルが存在する場合と存在しない場合で、返却される結果オブジェクトの状態が異なります。

テーブルが存在した場合の結果オブジェクト:

{
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,  // 警告なし
  message: '',
  protocol41: true,
  changedRows: 0
}

テーブルが存在しなかった場合の結果オブジェクト:

{
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 1,  // 警告が1つ発生(テーブルが存在しないため)
  message: '',
  protocol41: true,
  changedRows: 0
}

このように、テーブルが存在しない場合はエラーになる代わりに warningCount プロパティが 1 に設定されます。この値をチェックすることで、プログラム側でより詳細な状況判断を行うことが可能になります。