SQLを使ってデータベースを操作していると、DROP TABLEというコマンドを目にすることがあります。しかし、DROP TABLEを実行した場合に「中のデータだけが消えるのか」「空のテーブル構造は残るのか」と疑問に感じる方も少なくありません。
この記事では、DROP TABLEの正確な動作やDELETE・TRUNCATEとの違い、テーブル定義を残したままデータだけを削除する方法について、初心者にも分かりやすく解説します。
DROP TABLEを実行するとテーブル定義も削除される
SQLのDROP TABLEコマンドを実行すると、テーブル内のレコードデータだけではなく、テーブルそのものが削除されます。
つまり、テーブル名、列名、データ型、制約、インデックスなどのテーブル定義構造もすべて削除されるため、実行後は空のテーブルが残ることはありません。
例えば、以下のSQLを実行した場合を考えます。
DROP TABLE users;
この処理を行うと、usersという名前のテーブル自体がデータベースからなくなります。そのため、再度利用する場合はCREATE TABLEで作り直す必要があります。
DROP TABLEとDELETEの違い
DROP TABLEと混同されやすいSQLとしてDELETEがあります。しかし、この2つは削除対象が大きく異なります。
| SQLコマンド | 削除されるもの | テーブル定義 |
|---|---|---|
| DROP TABLE | テーブル全体 | 削除される |
| DELETE | レコードデータ | 残る |
| TRUNCATE | 全レコード | 残る |
DELETEを使う場合、データだけが削除され、テーブル構造はそのまま残ります。
例えば、以下のSQLではusersテーブル自体は維持されます。
DELETE FROM users;
実行後はデータ件数が0件になりますが、列設定や制約などは残るため、再びデータを追加できます。
テーブルを空にしたい場合はTRUNCATEを使う
テーブル構造を残したまま、すべてのデータだけを削除したい場合にはTRUNCATE TABLEを使用する方法があります。
例えば以下のように記述します。
TRUNCATE TABLE users;
TRUNCATEはテーブル内の全レコードを高速に削除しますが、テーブル定義は保持されます。
開発環境でテストデータを一括削除したい場合や、本番環境で大量データを初期化する場合などに利用されます。
DROP TABLEを実行する時の注意点
DROP TABLEは非常に強力な削除処理であり、実行すると基本的には元に戻せません。そのため、本番環境で実行する場合は十分な確認が必要です。
例えば、顧客情報を保存しているcustomersテーブルに対してDROP TABLEを実行すると、顧客データだけでなく、テーブル構造や設定情報も失われます。
重要なデータを扱う場合は、事前にバックアップを取得したり、対象のデータベースやテーブル名を確認したりすることが大切です。
テーブルを削除して作り直す場合の流れ
開発中などでテーブルを完全に作り直したい場合は、DROP TABLE後にCREATE TABLEを実行する流れになります。
例えば以下のような処理です。
DROP TABLE users;
CREATE TABLE users (
id INT,
name VARCHAR(100)
);
この場合、古いusersテーブルは完全に削除され、新しい定義で別のusersテーブルが作成されます。
ただし、元のデータは戻らないため、必要な場合は削除前にバックアップやデータ移行を行う必要があります。
まとめ
SQLのDROP TABLEを実行した場合、レコードデータだけが削除されるのではなく、テーブル定義そのものも削除されます。そのため、空のテーブル構造が残ることはありません。
データだけを消したい場合はDELETEやTRUNCATE TABLEを使用し、テーブル自体を不要にする場合にDROP TABLEを使用します。
それぞれのSQLコマンドは削除範囲が異なるため、目的に合わせて正しく使い分けることが、データベース操作での重要なポイントです。


コメント