情報処理試験を勉強していると、「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」と整理すると混乱しません。