情報処理試験を勉強していると、「DDLって何?DMLやDCLとどう違うの?」と混乱しがちです。

この記事ではDDLの意味から主要コマンド、試験での出題パターンまでを一気に整理します。

対象試験と出題頻度

DDLは、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題されるテーマです。

SQLの分類(DDL/DML/DCL)を正確に区別できるかを問う問題が定番化しており、APでは午後試験でCREATE TABLE文を実際に読み解く設問も出題されます。

詳細をクリックして確認
対象試験:
ITパスポート
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

DDL(SQL)の定義

DDL(Data Definition Language:データ定義言語)とは、一言で言うと

 「SQLの中で、テーブルやビューなどデータベースの”構造”を定義・変更・削除するための命令群

のことです。

イメージとしては、建物の設計図を引く作業です。

マンションを建てるとき、まず設計図(間取り・柱の位置・階数)を引きます。設計図ができて初めて、部屋に家具を入れたり住人が暮らしたりできます。

DDLはデータベースの「設計図を引く」役割を担います。テーブルという「箱」を作り、各列の名前やデータ型を決める。箱がなければデータの出し入れ(DMLの仕事)はできません。

📊 DDLの基本情報

項目 内容
正式名称 Data Definition Language(データ定義言語)
所属 SQLのサブ言語の1つ
主なコマンド CREATE、ALTER、DROP
操作対象 テーブル、ビュー、インデックス、スキーマなどの構造

解説

DBMSがデータを管理するには、まず「どんな構造でデータを格納するか」を決めなければなりません。テーブルの名前、列名、データ型、制約条件。こうした構造上の定義を記述するのがDDLの役割です。

SQLは用途に応じて3つのサブ言語に分類されます。

DDLはその1つであり、残りの2つ(DML・DCL)とは「何を操作するか」がまったく異なります。

SQLの3分類:DDL・DML・DCL

分類 正式名称 役割 主なコマンド
DDL Data Definition Language データ構造の定義・変更・削除 CREATE, ALTER, DROP
DML Data Manipulation Language データの検索・追加・更新・削除 SELECT, INSERT, UPDATE, DELETE
DCL Data Control Language アクセス権限の付与・取消 GRANT, REVOKE

先ほどの設計図の例えを続けると、DDLが「設計図を引く」作業、DMLが「家具を搬入・移動・搬出する」作業、DCLが「入室許可証を発行する」作業に該当します。

DDLの主要コマンド3つ

DDLのコマンドは主にCREATE・ALTER・DROPの3つです。

それぞれの役割と、実際のSQL構文を確認しましょう。

CREATE ― 構造を新規に作る

テーブルやビュー、インデックスを新しく定義するコマンドです。

最も基本的なDDL操作であり、テーブル作成時には列名・データ型・制約(PRIMARY KEY、NOT NULL、FOREIGN KEYなど)を指定します。

— 社員テーブルを新規作成する例

CREATE TABLE 社員 (

社員ID    CHAR(5)    PRIMARY KEY,

氏名      VARCHAR(50) NOT NULL,

部署コード CHAR(3)    REFERENCES 部署(部署コード)

);

ALTER ― 既存の構造を変更する

すでに存在するテーブルに列を追加したり、制約を変更したりするコマンドです。テーブルを作り直す(DROPしてCREATEし直す)必要がないため、運用中のデータベースで構造を修正する場面で使われます。

— 社員テーブルに「メールアドレス」列を追加する例

ALTER TABLE 社員

ADD メールアドレス VARCHAR(100);

DROP ― 構造を丸ごと削除する

テーブルやビューなどの定義そのものを完全に削除するコマンドです。

DMLのDELETEが「箱の中身を空にする」操作なのに対し、DROPは「箱ごと消す」操作です。一度実行すると元に戻せないため、実務では慎重に扱います。

— 社員テーブルを定義ごと削除する例

DROP TABLE 社員;

図解:DDL・DML・DCLの守備範囲

3つのサブ言語が、データベースのどの部分を操作するかを図で整理します。

SQLのサブ言語と操作対象の関係

DDL(定義)

CREATE ― 作成
ALTER ― 変更
DROP ― 削除

▼ 操作対象

テーブル・ビュー
インデックス等の構造

DML(操作)

SELECT ― 検索
INSERT ― 追加
UPDATE ― 更新
DELETE ― 削除

▼ 操作対象

テーブル内の
行(データ)

DCL(制御)

GRANT ― 権限付与
REVOKE ― 権限取消

▼ 操作対象

ユーザーの
アクセス権限

※ DDLは「箱を作る・壊す」、DMLは「箱の中身を出し入れ」、DCLは「箱の鍵を管理」と覚える

CREATE TABLEで使う主な制約

CREATE TABLE文では、列に制約を付けてデータの整合性を守ります。

AP午後のデータベース問題ではこの制約の読み取りが頻繁に求められるため、代表的な5つを押さえておきましょう。

制約名 意味 記述例
PRIMARY KEY 主キー。行を一意に識別する。NULL不可・重複不可 社員ID CHAR(5) PRIMARY KEY
FOREIGN KEY
(REFERENCES)
外部キー。他テーブルの主キーを参照し、参照整合性を保つ REFERENCES 部署(部署コード)
NOT NULL NULL(空値)の格納を禁止する 氏名 VARCHAR(50) NOT NULL
UNIQUE 列の値の重複を禁止する(NULLは許可される場合がある) メール VARCHAR(100) UNIQUE
CHECK 列の値が指定した条件を満たすことを強制する 年齢 INTEGER CHECK(年齢 >= 0)
なんとなくで覚えたい人向け:DDLの3コマンドをざっくり理解

引っ越しで考えると分かりやすいです。CREATEは新しい本棚を買ってきて組み立てる作業。棚の段数(列数)や棚板の間隔(データ型)はこの段階で決まります。ALTERは組み立てた本棚に追加の棚板を差し込んで段数を増やす作業。DROPは本棚ごと粗大ごみに出してしまう作業です。本棚がなければ本(データ)を並べることはできませんし、本棚を捨てれば中の本もすべて失われます。DDLは「データを入れる器そのものを管理するコマンド」と覚えてください。

では、DDLが試験でどのように出題されるか見ていきましょう。

💡 DDLの核心を3行で

・SQLを「定義(DDL)」「操作(DML)」「制御(DCL)」の3つに分類したうちの1つ
・CREATE(作成)、ALTER(変更)、DROP(削除)の3コマンドでデータベースの構造を管理する
・DMLの「DELETE=中身を消す」とDDLの「DROP=箱ごと消す」の違いが頻出の論点


試験ではこう出る!

DDLに関連する問題は、IP・FE・APの午前試験でSQLの分類問題やCREATE TABLE文の読み取り問題として繰り返し出題されています。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
IP H30秋
問71
HTTPS通信のプロトコルを選ぶ問題。選択肢にSQLが含まれ、その説明文で「DDLとDMLからなる」と記述。 ・SQL=DDL+DMLで構成されるデータベース言語という定義が正誤判断の材料
・ITパスポートでも3分類の知識が前提
FE R6免除
問20
特定の利用者だけに表を更新する権限を与える方法を選ぶ問題。選択肢にCREATE TABLE文の参照制約やGRANT文が登場。 ・CREATE TABLE文の参照制約=DDLの一部
・GRANT文=DCLの一部
・DDLとDCLの境界を正しく区別できるかが鍵
AP R7春
午前 問27
CREATE TABLE文の参照制約(FOREIGN KEY … REFERENCES … ON DELETE CASCADE)の動作を選ぶ問題。 ・DDLで定義した参照制約の削除規則を読み解く
・CASCADEの意味(親行削除→子行も連動削除)
AP R1秋
午前 問27
参照制約における参照動作(CASCADE / SET NULL / RESTRICT / NO ACTION)を選ぶ問題。 ・DDLで設定する参照動作の4パターンの意味を正確に区別できるか

📝 IPA試験での出題パターン

パターン1:「SQLの分類を選べ」
「関係データベースを操作するためのデータベース言語で、DDLとDMLからなるものはどれか」のように、SQL自体の定義を問う形式。IP・FEで定番。SQLの選択肢に「データ定義言語と操作言語で構成される」と書かれていれば正解。

 

パターン2:「CREATE TABLE文を読み取れ」
AP午前で頻出。CREATE TABLE文に書かれた参照制約(FOREIGN KEY … REFERENCES … ON DELETE CASCADE)の意味を理解し、親テーブルの行を削除した際に子テーブルで何が起きるかを答える形式。ここだけは確実に押さえてください。

 

パターン3:「DDLとDCLの区別」
FEで出題されたパターン。「CREATE TABLE文の参照制約で権限を制限する」と「GRANT文で権限を付与する」の違いを見抜けるかが問われる。参照制約はデータ整合性を守るもの(DDL)であり、アクセス権限の管理(DCL)ではない。

 

試験ではここまででOKです。ALTER TABLEの細かい構文バリエーションやDROP時のCASCADE制約まで問われることはほぼないので、深追いは不要です。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. SQLの分類のうち、テーブルやビューなどデータベースの構造を定義・変更・削除するための言語として、最も適切なものはどれでしょうか?

  • A. DML(Data Manipulation Language)で、SELECT・INSERT・UPDATE・DELETEによりデータの検索・追加・更新・削除を行う言語である。
  • B. DCL(Data Control Language)で、GRANT・REVOKEによりユーザーへのアクセス権限の付与・取消を行う言語である。
  • C. DDL(Data Definition Language)で、CREATE・ALTER・DROPによりテーブルやビューの作成・変更・削除を行う言語である。

正解と解説を見る

正解:C

解説:
DDLはデータベースの構造(テーブル・ビュー・インデックスなど)を定義・変更・削除するSQLのサブ言語です。CREATE・ALTER・DROPの3コマンドがこれに該当します。

選択肢AはDMLの説明です。DMLはテーブル内のデータ(行)を操作する言語であり、構造そのものの定義には関与しません。選択肢BはDCLの説明です。DCLはユーザーのアクセス権限を制御する言語であり、テーブルの作成や削除とは目的が異なります。


よくある質問(FAQ)

Q. DROPとDELETEはどちらもデータを消すのに、なぜ分類が違うのですか?

操作対象が異なります。DELETE(DML)はテーブル内の「行」を削除する操作です。テーブルの定義(列名・データ型・制約)はそのまま残り、空のテーブルとして引き続き使えます。一方、DROP(DDL)はテーブルの定義そのものを削除する操作です。実行するとテーブルが消滅し、中のデータも全て失われます。段ボール箱で例えると、DELETEは「箱の中身を取り出す」、DROPは「箱ごとゴミ箱に捨てる」に相当します。

Q. TRUNCATEはDDLとDMLのどちらですか?

TRUNCATEはDDLに分類されます。テーブル内の全行を高速に削除するコマンドですが、内部的にはテーブルの領域を再初期化する動作であり、ロールバック(取り消し)ができない実装が多いです。DELETEは行単位で削除しトランザクションログに記録するのに対し、TRUNCATEはログを最小限にして一括削除します。IPA試験の範囲で直接出題されることはほぼありませんが、実務では重要な違いです。

Q. DDLで定義した内容はどこに保存されますか?

DDLで定義したテーブルやビューの構造情報は、データディクショナリ(データ辞書)と呼ばれるシステムテーブルに格納されます。データディクショナリにはテーブル名、列名、データ型、制約情報などのメタデータが管理されており、DBMSはSQL文を実行する際にこの情報を参照します。ANSI/SPARCの3層スキーマアーキテクチャでは、DDLで記述した内容は主に概念スキーマに対応します。

Q. CREATE VIEWもDDLに含まれますか?

含まれます。ビュー(仮想表)はSELECT文の結果を定義として保存するオブジェクトであり、そのビュー定義を作成するCREATE VIEWはDDLに分類されます。同様に、インデックスを作成するCREATE INDEXもDDLです。「データベースの構造に関するオブジェクトを作成・変更・削除するコマンドはすべてDDL」と整理すると混乱しません。