2025年12月30日火曜日

SQL Server DROP TABLE文の使い方|テーブル削除の基本と注意点

不要になったテーブルを削除するには?SQL Server DROP TABLE文の基本と安全な使い方を解説

SQL Serverでデータベースを運用していると、開発途中のテーブルや不要になった一時テーブルを削除したい場面があります。
そのときに使うのが DROP TABLE文 です。
ただし、DROP TABLEは構造ごと削除される不可逆操作のため、誤って実行するとデータが完全に失われます。
この記事では、DROP TABLEの基本構文から安全な削除手順、依存関係の確認方法までを初心者向けに解説します。

目次

DROP TABLE文の基本構文

基本形

DROP TABLE文は、指定したテーブルを完全に削除する命令です。構文はシンプルですが、実行するとテーブル構造とデータが同時に消去されます。


DROP TABLE テーブル名;

たとえば、Customersテーブルを削除する場合は次のように書きます。


DROP TABLE Customers;

実行後はテーブルがデータベースから完全に消えるため、復元にはバックアップが必要です。

複数テーブルをまとめて削除する

カンマ区切りで削除

複数のテーブルを一度に削除する場合は、カンマで区切って指定できます。


DROP TABLE Orders, Products, Inventory;

削除対象が多い場合は、依存関係(外部キー)を確認して順番に削除するのが安全です。

存在確認をしてから削除する(IF EXISTS)

エラーを防ぐ構文

存在しないテーブルを削除しようとするとエラーが発生します。
SQL Server 2016以降では、IF EXISTSを使うことで安全に削除できます。


DROP TABLE IF EXISTS TempData;

この構文なら、指定したテーブルが存在する場合のみ削除され、存在しない場合は何も起きません。

外部キー制約を持つテーブルを削除する

親子関係を意識して削除する

FOREIGN KEY(外部キー)で関連づけられたテーブルを削除する場合、
参照先(親テーブル)よりも参照元(子テーブル)を先に削除する必要があります。


-- 例:Orders が Customers を参照している場合
DROP TABLE Orders;
DROP TABLE Customers;

外部キー制約がある状態で親テーブルを先に削除しようとすると、次のようなエラーが発生します。


メッセージ 3726、レベル 16、状態 1:
'Customers' テーブルは、FOREIGN KEY 制約により参照されているため削除できません。

制約を解除してから削除する

必要に応じて、外部キー制約を先に削除してからテーブルを削除します。


ALTER TABLE Orders
DROP CONSTRAINT FK_Orders_Customers;

DROP TABLE Customers;

削除後に再作成する場合は、制約も再定義する必要があります。

誤削除を防ぐための安全運用ポイント

1. 実行前に存在確認を行う

削除対象のテーブルが本当に不要かを確認するため、sys.tablesビューを使って存在をチェックしましょう。


SELECT name, create_date
FROM sys.tables
WHERE name = 'Customers';

2. テーブルのバックアップを取る

DROP TABLEは元に戻せない操作です。
削除前にバックアップまたはスクリプト出力を行い、再作成できるようにしておきましょう。

3. 一時テーブルなら tempdb に限定して使う

検証や一時処理で使うテーブルは、#TempTable(一時テーブル)として作成することで、自動削除されるように運用できます。


CREATE TABLE #TempTable (ID INT, Name NVARCHAR(50));

セッション終了時に自動で破棄されるため、安全な実験環境として便利です。

まとめと次のステップ

学んだ内容の整理

  • DROP TABLEはテーブル構造とデータを完全に削除する命令。
  • 複数テーブル削除やIF EXISTS構文で安全性を高められる。
  • 外部キー制約がある場合は削除順序または制約解除が必要。
  • 実行前に存在確認とバックアップを徹底する。

参考リンク

SQL Server 解説用イメージ

0 件のコメント:

コメントを投稿