情報処理試験を勉強していると、「DDLとDMLは分かったけど、DCLって何?GRANTやREVOKEってどう使うの?」と疑問に思うタイミングが来ます。
この記事では、DCL(データ制御言語)の意味・構文・DDL/DMLとの違いを、日常の例え話を交えて整理します。
対象試験と出題頻度
DCL(SQL)は、ITパスポート・基本情報技術者・応用情報技術者の3区分で出題されるテーマです。
SQLの命令分類(DDL・DML・DCL)を問う問題や、GRANT文の役割を選ばせる問題として定番化しています。
詳細をクリックして確認
ITパスポート
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
DCL(Data Control Language:データ制御言語)とは、一言で言うと
「データベースに対する操作権限の付与・取り消しを行うSQL命令の分類」
のことです。
イメージとしては、「オフィスの入館カードの発行・回収を担当する総務部」です。
新入社員が入ったら入館カードを渡し(=GRANT)、退職したら回収する(=REVOKE)。
建物の設計図を引く仕事でも、フロアの中で書類を扱う仕事でもなく、「誰に入室権限を与えるか」だけを管理する部門がDCLです。
📊 DCL(SQL)の基本情報
| 項目 | 内容 |
|---|---|
| 正式名称 | Data Control Language(データ制御言語) |
| 代表的な命令 | GRANT(権限付与)、REVOKE(権限取り消し) |
| 操作対象 | テーブル・ビューなどのオブジェクトに対するアクセス権限 |
| 関連分類 | DDL(定義言語)、DML(操作言語) |
解説
関係データベースを複数のユーザーで共有する環境では、「誰がどのテーブルに対して何をしてよいか」を明確に管理する必要があります。全員がすべてのデータを自由に削除・変更できる状態は、セキュリティ上も運用上も危険です。
この「権限管理」を担うのがDCLです。
SQLの命令は大きく3つに分類されますが、それぞれの役割は明確に分かれています。
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はオフィスの中で書類を出し入れする「事務スタッフ」です。
GRANT文の構文
GRANT文は、指定したユーザーやロールに対してオブジェクトへの操作権限を付与します。
GRANT 権限 ON オブジェクト名
TO { ユーザー名 | ロール名 | PUBLIC }
[ WITH GRANT OPTION ]
「WITH GRANT OPTION」を付けると、権限を受け取ったユーザーがさらに他のユーザーへ同じ権限を再付与できます。
-- 例:ユーザー tanaka に「社員」テーブルへの SELECT 権限を付与
GRANT SELECT ON 社員 TO tanaka;
REVOKE文の構文
REVOKE文は、GRANT文で付与した権限を取り消します。
REVOKE 権限 ON オブジェクト名
FROM { ユーザー名 | ロール名 | PUBLIC }
-- 例:ユーザー tanaka から「社員」テーブルへの SELECT 権限を取り消し
REVOKE SELECT ON 社員 FROM tanaka;
ここだけは確実に押さえてください。GRANTは「TO(~に与える)」、REVOKEは「FROM(~から取り消す)」です。前置詞が逆になる点が最大の区別ポイントです。
図解:GRANT / REVOKE の流れ
GRANT / REVOKE の権限フロー
管理者
GRANT … TO
REVOKE … FROM
ユーザー
操作
テーブル
▲ 管理者がGRANTで権限を渡すとユーザーはテーブルを操作できる。REVOKEで回収すると操作不可に戻る。
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 DCL(SQL)の核心を3行で
・SQLの命令はDDL(構造定義)・DML(データ操作)・DCL(権限制御)の3つに分類される
・DCLの代表命令はGRANT(権限付与 / TO)とREVOKE(権限取り消し / FROM)
・WITH GRANT OPTIONを付けると、権限の再付与が可能になる
試験ではこう出る!
DCLに関する出題は、GRANT文の役割を直接問うパターンと、SQL文の分類(DDL/DML/DCL)の対応を問うパターンの2つに大別されます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R2秋 午前 問26 |
GRANT文の説明として適切なものを選ぶ問題。 | ・「表への問合せ・更新・追加・削除の操作権限を付与する」が正解 ・パスワード設定(ALTER USER)、ビュー作成(CREATE VIEW)、暗号化がひっかけ |
| AP H23秋 午前 問28 |
上記R2秋 問26と同一構成の問題(流用)。 | ・APでは同じ問題が数年おきに再出題される典型例 |
| FE R4年 免除 問26 |
同じくGRANT文の説明を選ぶ問題。AP R2秋 問26と同一。 | ・FEとAPで同じ問題が共有される実例 |
📝 IPA試験での出題パターン
パターン1:「GRANT文の説明を選べ」
4つの選択肢にパスワード設定・ビュー作成・暗号化・権限付与の説明が並び、GRANT文に該当するものを選ぶ形式。ひっかけの「ビューで行・列を制限する」はCREATE VIEW文の話なので注意。
パターン2:「SQL文と分類の正しい組み合わせを選べ」
GRANT文=DCL、DELETE文=DML、CREATE TABLE文=DDLのように、命令と分類の対応を問う形式。「SELECT文=DCL」のような誤った組み合わせがひっかけ。
試験ではここまででOKです。GRANT文で指定できる個別の権限名(SELECT, INSERT, UPDATE, DELETEなど)の一覧まで暗記する必要はありません。深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. SQL文と、その分類の組み合わせとして最も適切なものはどれでしょうか?
- A. CREATE TABLE文 ── DML(Data Manipulation Language)
- B. GRANT文 ── DCL(Data Control Language)
- C. SELECT文 ── DDL(Data Definition Language)
正解と解説を見る
正解:B
解説:
GRANT文はデータベースのオブジェクトに対する操作権限を付与するSQL文であり、DCL(データ制御言語)に分類されます。
選択肢AのCREATE TABLE文はテーブルの構造を定義する命令であり、DML(データ操作言語)ではなくDDL(データ定義言語)に分類されます。選択肢CのSELECT文はテーブルからデータを検索する命令であり、DDL(データ定義言語)ではなくDML(データ操作言語)に分類されます。
よくある質問(FAQ)
Q. COMMIT文やROLLBACK文はDCLに含まれますか?
教科書やDBMS製品によって分類が異なります。IPA試験のシラバスでは、COMMITやROLLBACKはトランザクション制御文(TCL:Transaction Control Language)として扱われることが多く、DCLとは区別されます。試験範囲では「DCL=GRANT・REVOKE」とだけ覚えておけば得点に支障はありません。
Q. GRANTで付与できる権限にはどのような種類がありますか?
代表的なものはSELECT(検索)、INSERT(追加)、UPDATE(更新)、DELETE(削除)の4つです。さらにALL PRIVILEGES(全権限)を指定してまとめて付与することもできます。実務ではテーブル単位・カラム単位で細かく制御するケースがありますが、IPA試験ではそこまで細かく問われることはありません。
Q. 「ビューでアクセスを制限する」のはDCLではないのですか?
ビュー(VIEW)はDDLのCREATE VIEW文で作成するもので、DCLには含まれません。ビューを使えば特定の行・列だけを見せることが可能ですが、これはデータの「見せ方」を制御する仕組みであり、「操作権限そのもの」を制御するGRANT/REVOKEとは目的が異なります。過去問のひっかけ選択肢として頻出するため、この区別は押さえておいてください。
Q. WITH GRANT OPTIONで再付与された権限は、元の権限を取り消すとどうなりますか?
元のユーザーからREVOKEで権限を取り消すと、そのユーザーがWITH GRANT OPTIONで再付与した先の権限も連鎖的に取り消されます(CASCADE動作)。権限が芋づる式に消える仕組みです。実務では意図しない権限剥奪を防ぐため、ロール(役割グループ)を使った権限管理が一般的です。