情報処理試験を勉強していると、「DMLって何?DDLとどう違うの?」と混乱しがちです。この記事では、SQLの中でも特に試験で頻出のDML(データ操作言語)を、4つの命令文の役割と一緒に整理します。
対象試験と出題頻度
DML(SQL)は、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題されるテーマです。
関係データベースを操作するSQL文の中核であり、SELECT文の読み取り問題はFE・APで毎回のように出題されます。
詳細をクリックして確認
ITパスポート
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
DML(Data Manipulation Language:データ操作言語)とは、一言で言うと
「SQLの中で、データの検索・追加・更新・削除を行う命令文のグループ」
のことです。
イメージとしては、「図書館の貸出カウンター」です。
図書館には「本棚の配置を決める設計図」(=DDL)と、「実際に本を探す・借りる・返す・処分する窓口業務」(=DML)があります。
DMLは後者にあたり、すでに用意されたテーブル(本棚)に対して「中身のデータ(本)をどうするか」を指示する命令です。
📊 DML(SQL)の基本情報
| 項目 | 内容 |
|---|---|
| 正式名称 | Data Manipulation Language(データ操作言語) |
| 所属 | SQL(Structured Query Language)の一部 |
| 主な命令文 | SELECT、INSERT、UPDATE、DELETE |
| 操作対象 | テーブル内のデータ(行・列) |
解説
SQLは「関係データベースを操作するための言語」ですが、その中身は目的別に3つのカテゴリに分かれています。
テーブルの構造を定義するDDL、データを出し入れするDML、そしてアクセス権限を制御するDCLです。
DMLが生まれた背景は単純で、「定義済みのテーブルに対して、中のデータを自由に操作する手段が必要だった」という点に尽きます。
DDLでテーブルの器を作っても、中身のデータを検索・追加・変更・削除できなければデータベースは使い物になりません。
SQLの3分類:DDL・DML・DCL
まず全体像を押さえましょう。SQL文は以下の3つに分類されます。
| 分類 | 正式名称 | 役割 | 代表的な命令 |
|---|---|---|---|
| DDL | Data Definition Language | テーブルやインデックスなどの構造を定義・変更・削除する | CREATE, ALTER, DROP |
| DML | Data Manipulation Language | テーブル内のデータを検索・追加・更新・削除する | SELECT, INSERT, UPDATE, DELETE |
| DCL | Data Control Language | アクセス権限の付与・剥奪を行う | GRANT, REVOKE |
この中で、日常的に最も使う頻度が高く、試験でも圧倒的に出題されるのがDMLです。
DMLの4つの命令文
DMLを構成する命令は4つです。それぞれの役割と基本構文を確認しましょう。
| 命令文 | 操作 | 説明 |
|---|---|---|
| SELECT | 検索 | テーブルから条件に合うデータを抽出する。WHERE句で条件指定、ORDER BYで並び替え、GROUP BYでグループ化が可能 |
| INSERT | 追加 | テーブルに新しい行(レコード)を挿入する |
| UPDATE | 更新 | 既存の行のデータを書き換える。SET句で変更内容、WHERE句で対象行を指定する |
| DELETE | 削除 | テーブルから条件に合う行を削除する。テーブル自体はそのまま残る(テーブルごと消すDROPはDDL) |
図解:DMLの4命令とテーブルの関係
「社員」テーブルを例に、各命令がデータに対してどう作用するかを図で整理します。
DMLの4命令が「社員」テーブルに行う操作
社員テーブル
| 社員ID | 氏名 | 部署 |
|---|---|---|
| 001 | 田中 | 営業 |
| 002 | 鈴木 | 開発 |
| 003 | 佐藤 | 総務 |
▼ このテーブルに対して以下の4操作ができる
🔍 SELECT(検索)
SELECT * FROM 社員
WHERE 部署 = '営業';
→ 田中の行だけ取り出す
➕ INSERT(追加)
INSERT INTO 社員
VALUES ('004','高橋','企画');
→ 新しい行を1件追加
✏️ UPDATE(更新)
UPDATE 社員 SET 部署='企画'
WHERE 社員ID = '002';
→ 鈴木の部署を書き換え
🗑️ DELETE(削除)
DELETE FROM 社員
WHERE 社員ID = '003';
→ 佐藤の行を削除
▲ 4命令はすべて「テーブル内のデータ(行)」に対する操作。テーブル自体の作成・削除はDDLの領域
DDLとDMLの混同に注意:DROPとDELETEの違い
初学者が最もつまずくのが「DROP」と「DELETE」の混同です。どちらも「消す」操作ですが、対象が根本的に異なります。
DROP(DDL) vs DELETE(DML)
DROP TABLE 社員;
テーブルそのものが消滅する
(器ごとなくなる)
→ DDL(定義言語)
DELETE FROM 社員;
全行が削除されるが
テーブルの構造は残る
→ DML(操作言語)
では、これらの命令が試験でどのように出題されるか見ていきましょう。
💡 DML(SQL)の核心を3行で
・SQLのうち、テーブル内のデータを操作する命令群がDML(Data Manipulation Language)
・SELECT(検索)・INSERT(追加)・UPDATE(更新)・DELETE(削除)の4つで構成される
・テーブルの構造自体を操作するDDL(CREATE/DROP/ALTER)とは明確に区別する
試験ではこう出る!
DML関連の出題は、FE・APではSELECT文の読解が圧倒的に多く、IPでは「SQLとは何か」「DDLとDMLの違い」を問う知識問題が中心です。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| IP H30秋 問58 |
SSL/TLS、SQLなど各用語の説明を選ぶ問題。選択肢ウに「SQLはRDBを操作するための言語であり、DDLとDMLで構成される」と記載。 | ・SQLの全体像(DDL+DML)を正しく理解しているか |
| FE R7 科目A 問6 |
SELECT文のWHERE句のIN句と同じ結果を得られるSQL文を選ぶ問題。 | ・IN句をOR条件に置き換える知識 ・ANDとORの論理的な違い |
| AP R6秋 午前 問30 |
SELECT文の副問合せ・ウィンドウ関数を使った結果を問う問題。 | ・SELECT文の高度な構文の読解力 |
| AP R4秋 午前 問28 |
副問合せを含むSELECT文の結果を問う問題。 | ・副問合せの評価順序 ・DISTINCT句の意味 |
📝 IPA試験での出題パターン
パターン1(IP向き):「SQLの構成要素を選べ」
SQLがDDLとDMLで構成されることを知っているかを問う形式。ひっかけとして、HTML、CSS、SSL/TLSなどの説明が選択肢に混ざる。「データ定義言語」「データ操作言語」というキーワードを押さえていれば正解できる。
パターン2(FE・AP向き):「SELECT文の結果を答えよ」
DML出題の大半がこの形式。WHERE句の条件指定(IN, BETWEEN, LIKE)、GROUP BY+HAVING、副問合せ、JOINの結合結果を正確に読み取れるかが問われる。特にFEでは毎回出題されるため、SELECT文の構文は最優先で対策すべき領域。
パターン3(AP午後向き):「INSERT/UPDATE/DELETEの穴埋め」
AP午後のデータベース問題では、E-R図を読み取った上でDMLを記述させる問題が定番。SELECT以外の3命令の構文も書けるようにしておく必要がある。
IPレベルでは「DMLとDDLの区別」ができれば十分です。FE・APではSELECT文の読解が本丸なので、深追いするならそちらに集中してください。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. SQLにおけるDML(データ操作言語)の説明として、最も適切なものはどれでしょうか?
- A. テーブルやインデックスの作成・変更・削除など、データベースの構造を定義するための命令群である。
- B. テーブルに格納されたデータの検索・追加・更新・削除を行うための命令群であり、SELECT・INSERT・UPDATE・DELETEが含まれる。
- C. データベースへのアクセス権限の付与や剥奪を行うための命令群であり、GRANTやREVOKEが含まれる。
正解と解説を見る
正解:B
解説:
DML(Data Manipulation Language)は、テーブル内のデータを操作するSQL命令の総称であり、SELECT・INSERT・UPDATE・DELETEの4つが該当します。
選択肢AはDDL(Data Definition Language)の説明です。DDLはCREATE・ALTER・DROPなど、テーブルそのものの構造を定義する命令を扱います。データの中身を操作するDMLとは対象が異なります。選択肢CはDCL(Data Control Language)の説明です。DCLはGRANT・REVOKEなど、ユーザーに対する権限の制御を行う命令であり、データの出し入れとは目的が異なります。
よくある質問(FAQ)
Q. SELECT文はDMLではなく「DQL」と分類されることがあると聞きました。試験ではどちらで覚えるべきですか?
IPA試験ではSELECTをDMLの一部として扱います。確かに一部のデータベース教科書ではSELECTだけを「DQL(Data Query Language)」と呼ぶ場合がありますが、IPA公式のシラバスや過去問ではDMLにSELECTを含める分類を採用しています。試験対策としてはDML=SELECT・INSERT・UPDATE・DELETEの4つで覚えてください。
Q. TRUNCATE文はDMLですか?DDLですか?
TRUNCATEはDDLに分類されます。「テーブル内の全行を一括削除する」という点ではDELETEに似ていますが、TRUNCATEはテーブルの定義を再作成する操作として扱われ、ロールバック(取消し)ができません。一方、DELETEはDMLなのでトランザクション内でロールバック可能です。この違いはAP午後で問われることがあるため、余裕があれば押さえておくと安心です。
Q. 実務ではDMLの中でどの命令を最もよく使いますか?
圧倒的にSELECTです。業務アプリケーションの大半は「データを条件付きで検索して画面に表示する」処理であり、INSERT・UPDATE・DELETEは登録・変更・削除の画面でのみ発生します。開発現場では「SQLが書ける=SELECT文を自在に組み立てられる」とほぼ同義で使われるほどです。
Q. DMLの誤操作でデータが消えてしまった場合、復旧する方法はありますか?
トランザクションがまだ確定(COMMIT)されていなければ、ロールバック(ROLLBACK)で操作前の状態に戻せます。COMMIT後であれば、DBMSのバックアップとトランザクションログを使ったロールフォワード(前進復帰)で復旧するのが一般的です。IPA試験では障害回復の手順としてこのロールバック・ロールフォワードの使い分けが頻出です。