情報処理試験を勉強していると、「DROP文って何?DELETE文やTRUNCATE文と何が違うの?」と混乱しがちです。この記事では、SQLのDROP文の意味・構文・試験での問われ方を整理します。
対象試験と出題頻度
DROP文は、基本情報技術者・応用情報技術者で出題されるテーマです。
関係データベースのSQL分類問題やテーブル操作の問題で登場し、DDL(データ定義言語)の一要素として正確に識別できるかが問われます。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
DROP文(DROP statement)とは、一言で言うと
「データベース上のテーブルやビューなどのオブジェクトを、定義ごと完全に削除するSQLのDDL命令」
のことです。
イメージとしては、「ノートの1ページを破り捨てる」行為です。
ノートに書かれた文字を消しゴムで消す(=データだけ消す)のではなく、そのページ自体をビリビリと破り取って捨ててしまう操作に当たります。
罫線もページ番号も全部なくなるため、元に戻すことはできません。
📊 DROP文の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | DROP statement |
| SQLでの分類 | DDL(Data Definition Language:データ定義言語) |
| 主な操作対象 | TABLE、VIEW、INDEX、DATABASE など |
| 同じDDLの仲間 | CREATE(作成)、ALTER(変更) |
解説
データベースを運用していると、不要になったテーブルやビューを片付ける場面が必ず訪れます。このとき使うのがDROP文です。
基本構文
DROP文の書き方は非常にシンプルです。
— テーブルを削除する
DROP TABLE テーブル名;
— ビューを削除する
DROP VIEW ビュー名;
— インデックスを削除する
DROP INDEX インデックス名;
「DROP」の後ろに対象の種類とオブジェクト名を書くだけです。WHERE句などの条件指定は存在しません。指定したオブジェクトが丸ごと消えます。
DDL・DML・DCLの位置づけ
SQLの命令は、役割に応じてDDL・DML・DCLの3つに分類されます。
DROP文がどこに属するかを正確に区別することが理解の土台になります。
| 分類 | 役割 | 代表的な命令 |
|---|---|---|
| DDL データ定義言語 |
データの「入れ物」を作る・変える・消す | CREATE、ALTER、DROP |
| DML データ操作言語 |
データの「中身」を取り出す・入れる・消す・書き換える | SELECT、INSERT、UPDATE、DELETE |
| DCL データ制御言語 |
権限やトランザクションを制御する | GRANT、REVOKE、COMMIT、ROLLBACK |
図解:DROP文・DELETE文・TRUNCATE文の違い
「データを消す」操作は3種類あり、混同しやすいポイントです。何が残り、何が消えるかで整理すると明快になります。
DELETE文
DML(データ操作言語)
テーブル定義:残る
データ:条件に合う行を削除
ROLLBACKで取消可能
TRUNCATE文
DDL(データ定義言語)
テーブル定義:残る
データ:全行を一括削除
ROLLBACKで取消不可
DROP文
DDL(データ定義言語)
テーブル定義:消える
データ:全行を丸ごと削除
ROLLBACKで取消不可
▲ 「消しゴムで行を消す」「白紙に戻す」「ページごと破り捨てる」の違い
ここだけは確実に押さえてください。
DROP文は「定義ごと消す」唯一の命令です。DELETE文やTRUNCATE文はテーブル構造を残したままデータだけを消すため、操作の影響範囲がまったく異なります。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 DROP文の核心を3行で
・テーブルやビューなどの定義ごと完全に削除するDDL命令
・DELETE文(行単位のデータ削除)やTRUNCATE文(全データ削除)とは影響範囲が異なる
・DDL(CREATE・ALTER・DROP)の仲間として分類を正確に覚える
試験ではこう出る!
DROP文は、FE・APの午前問題で「SQLの分類を問う問題」や「テーブル操作の構文を問う問題」の中に繰り返し登場しています。
📊 過去問での出題実績(DROP文が関係する問題)
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H22秋 午後 問2 |
ALTER TABLE文の操作について問う問題。解説にてALTER TABLEがDDLであること、ADD句・DROP句の使い分けが示された。 | ・ALTER TABLE内の「DROP」は列の削除 ・DDLに分類される操作の理解 |
| AP H28秋 午前 問29 |
SQL文の読解・テーブル操作問題。CREATE TABLE文の定義を前提に、DML/DDLの理解が求められた。 | ・CREATE文で作った表構造の読み取り ・DDL/DML分類の正確な理解 |
📝 IPA試験での出題パターン
パターン1:「DDL/DML/DCLの分類を問う」
「次のSQL文のうち、データ定義言語(DDL)に分類されるものはどれか」という形式で、CREATE・ALTER・DROPの選択肢が正解になるパターンです。ひっかけとして、DELETE(DML)を混ぜてくる問題が定番です。DROP=「定義の削除」、DELETE=「データの削除」と区別できれば即答できます。
パターン2:「CREATE TABLE文の読解問題」
CREATE TABLE文でテーブルを定義するSQL文の問題が出た場合、その対になるDROPの意味を聞かれることがあります。「表を削除するSQL文はどれか」のような問いで、DROP TABLE・DELETE FROM・TRUNCATE TABLE・ALTER TABLEの選択肢が並びます。
試験ではここまででOKです。TRUNCATE文はIPA試験の午前問題ではほぼ出ないため、深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. SQLにおけるDROP TABLE文の説明として、最も適切なものはどれでしょうか?
- A. 指定した条件に合致する行だけをテーブルから削除し、テーブル定義は維持する。
- B. テーブルの定義ごと完全に削除し、格納されていたデータもすべて失われる。
- C. テーブルに新しい列を追加したり、既存の列のデータ型を変更したりする。
正解と解説を見る
正解:B
解説:
DROP TABLE文は、DDL(データ定義言語)に分類されるSQL文で、テーブルそのものを定義ごと削除します。実行後はテーブル名もスキーマも消滅するため、ROLLBACKでの復元はできません。
選択肢AはDELETE文の説明です。DELETE文はDML(データ操作言語)に分類され、WHERE句で指定した行だけを消す操作であるため、テーブル構造は残ります。選択肢CはALTER TABLE文の説明です。ALTER TABLE文は同じDDLに属しますが、テーブル定義を「変更」する命令であり、「削除」するDROP文とは操作内容が異なります。
よくある質問(FAQ)
Q. DROP TABLE文を実行した後に、ROLLBACKで元に戻せますか?
戻せません。DROP文はDDLに分類されるため、多くのRDBMS(Oracle、MySQL等)では実行時に暗黙的なCOMMITが発行されます。実務で誤ってDROP TABLEを実行してしまった場合、バックアップからの復元が唯一の手段になります。
Q. DROP文とSQLインジェクションにはどんな関係がありますか?
SQLインジェクション攻撃では、攻撃者が入力フォームに「; DROP TABLE users;–」のような文字列を紛れ込ませ、テーブルを丸ごと削除させる手口が典型例として知られています。この被害を防ぐためにプレースホルダ(バインド機構)やエスケープ処理が対策として用いられます。
Q. 実務ではDROP文はどんな場面で使いますか?
開発環境でテスト用テーブルを作り直すとき、本番リリース時に旧バージョンの不要テーブルを整理するとき、データベースの移行作業で古いスキーマを片付けるときなどに使います。本番環境で実行する際は、必ず事前にバックアップを取得し、影響範囲を確認してから実行するのが鉄則です。
Q. DROP TABLE文に「IF EXISTS」を付ける意味は何ですか?
「DROP TABLE IF EXISTS テーブル名;」と書くと、指定したテーブルが存在しない場合でもエラーにならずスキップされます。スクリプトで複数のテーブルをまとめて削除するときや、CREATE TABLE文の前にDROPを入れて「あれば消してから作り直す」という手順を自動化するときに便利です。IPA試験の範囲では深掘りされないため、知識として知っておけば十分です。