🚀 応用情報技術者試験のデータベース分野対策|CREATE TABLE・VIEW・GRANTを徹底解説
データベーススペシャリストや応用情報技術者試験で必ず問われる「データ定義言語(DDL)」。 表の作り方から、セキュリティを守る権限管理まで、要点を網羅的に解説します!
午後試験攻略への第一歩:データベース定義の核心
応用情報技術者試験の午後分野において、データベースは「設問のパターンが決まっており、対策のコスパが最も高い」と言われる重要科目です。しかし、その土台となる「実表・ビュー・権限管理」の理解が曖昧なままでは、思わぬ「ひっかけ」に足元をすくわれます。
📍 本記事の注目トピック
- 重要用語:
ON DELETE CASCADEやUNIQUEの挙動など、用語の「深い意味」を整理 - 出題傾向: 午後試験で頻出する「SQL穴埋め」や「整合性制約の不備指摘」への対策法
- 実務応用: ビューを使ったセキュリティ設計の具体例
※本記事は、応用情報技術者試験シラバスおよび直近の出題傾向に基づき構成されています。
1. 🏗️ 実表の定義(CREATE TABLE)
データを物理的に保存する箱を作るコマンドです。単に列を作るだけでなく、データの「品質」を保つための制約が最重要ポイントです。
✅ 5つの主要な制約(整合性を守る壁)
| 制約名 | キーワード | 解説(AP試験のツボ) |
|---|---|---|
| 主キー制約 | PRIMARY KEY | 「一意性」+「非NULL」。これだけで2つの意味を持ちます。 |
| 一意性制約 | UNIQUE | 値の重複はNG。ただし、NULLの重複は許容されるのが落とし穴! |
| 参照制約 | REFERENCES | 外部キー。親テーブルに存在しない値の登録を阻止します。 |
| 検査制約 | CHECK | CHECK (評価 >= 1 AND 評価 <= 5) のように値の範囲を制限。 |
| デフォルト値 | DEFAULT | 値が未入力の際、自動で入る初期値(例:'未定'、0など)。 |
ECサイトの「注文テーブル」を作る際、
顧客IDを外部キーに設定します。これにより、「存在しない幽霊顧客からの注文」が登録されるのを防ぎ、データの整合性を保ちます。 2. 👁️ ビューの定義(CREATE VIEW)
ビューは「仮想的な表」です。複雑なSELECT文に名前をつけて保存し、あたかも一つの表のように扱えます。
🎯 ビューを使う3大メリット
- セキュリティ: 給与列を除いた「社員名簿ビュー」だけを一般社員に見せる。
- 利便性: 3つの表を結合した複雑なSQLを毎回書かずに済む。
- 独立性: 基底表の列名が変わっても、ビュー側で吸収すればアプリ側の修正が不要。
⚠️ 重要 更新不可能なビュー
以下の条件が含まれるビューは、元の表(基底表)を更新(INSERT/UPDATE)できません。
DISTINCT(重複排除)を使っている。GROUP BYやHAVINGで集計している。SUMやAVGなどの集合関数を使っている。- 複数の表を結合している(※DBMSにより一部可能だが試験では原則不可)。
3. 🔐 アクセス権限(GRANT / REVOKE)
「誰がどのデータを見ていいか」を細かく制御します。セキュリティ分野との複合問題として頻出です。
🛡️ 権限の種類
SELECT:見る権利INSERT:追加する権利UPDATE:書き換える権利DELETE:消す権利
GRANT UPDATE(社員名) ON 社員 TO ユーザA のように列単位の権限付与は可能ですが、DELETE権限だけは列指定ができません。「行ごと消す」のがDELETEだからです。 「人事部の担当者」には全社員の
SELECT権限を与え、「一般社員」には他人の給与が見えないよう、特定のビューに対してのみSELECT権限を与えることで、個人情報を守ります。 4. ⚡ トリガ(TRIGGER)
「表が更新されたら、自動でこの処理をして!」という予約注文のような機能です。
- BEFOREトリガ: 値が正しいかチェックし、エラーなら止める。
- AFTERトリガ: 更新が終わったあと、自動で「操作ログ」を残す。
📌 この章のまとめ(120点への近道)
- ✅ 主キーは「唯一無二」かつ「空っぽNG」。
- ✅ UNIQUEは「唯一無二」だが「空っぽ(NULL)」はOK。
- ✅ ビューは仮想表。集計(GROUP BY等)をしていると更新できない。
- ✅ GRANTは権限付与、REVOKEは権限取消。DELETEに列指定は不可!
- ✅ ON DELETE CASCADEは「親を消せば子も消える」連動設定。
次のステップ: 実際にSQL練習サイト等で CREATE TABLE を打ち込み、制約エラー(主キー重複など)をわざと発生させてみましょう。感覚が掴めます!
🏁 終わりに:試験合格とその先のスキルアップに向けて
お疲れ様でした!ここまで、実表の定義からビュー、権限管理まで、SQLの根幹となる知識を網羅的に解説してきました。 応用情報技術者試験において、データベースは「一度原理を理解してしまえば、最も得点が安定する得点源」です。
📈 午後試験の重要トレンド
近年の午後試験では、単なるSQLの穴埋めだけでなく、「E-R図とテーブル定義の整合性」や、「不適切な制約によるデータ矛盾の指摘」など、設計の妥当性を問う問題が増えています。
🏗️ 実務での背景知識
ON DELETE CASCADEなどの参照動作指定は、実務ではシステムのパフォーマンスや意図しないデータ消失のリスクを考慮して、あえてプログラム側で制御する場合もあります。試験知識をベースに、現場の最適解を探る力が求められます。
まずは過去問を5年分ほど解き、「主キー制約違反」や「参照制約違反」が具体的にどのようなシチュエーションで発生するかをイメージできるようになりましょう。それが合格への最短ルートです。
あなたの合格を心より応援しています。次は「正規化」や「インデックス設計」のセクションでお会いしましょう!
SQLの主要データ型:試験で問われるポイント
テーブルを定義する際、各列には格納する値に応じた「データ型」を指定します。試験対策としては、特に文字型の違いと数値の精度に注目しましょう。
| 分類 | データ型 | 特徴・注意点 |
|---|---|---|
| 文字型 | CHARACTER(n)短縮形:CHAR | 固定長。指定サイズに満たない場合は空白で埋められます。区分コードなどに利用。 |
CHARACTER VARYING(n)短縮形:VARCHAR | 可変長。実際の文字数分だけ保存します。氏名や住所など長さにバラツキがある列に最適。 | |
| 数値型 | INTEGER短縮形:INT | 整数型。計算速度が速く、IDや数量に使われます。 |
NUMERIC(m, n) | 固定小数点型。mは全桁数、nは小数部の桁数。金額計算など正確な小数が必要な場合に必須。 | |
| その他 | BLOB | 画像や音声などのバイナリ形式の大量データを格納します。 |
💡 試験攻略アドバイス:
「主キーに使うコード類は CHAR、それ以外は VARCHAR」という使い分けが一般的です。また、NUMERIC の指定方法(桁数の数え方)は午後試験の穴埋めで狙われることがあります。
📚 重要用語マスターリスト(完全網羅)
表(テーブル)の作成、変更、削除を行うためのSQL命令(CREATE, ALTER, DROPなど)。データベースの「構造」を定義します。午後試験では「適切なDDLを記述せよ」という問題が頻出です。
ストレージに物理的にデータが格納される表。後述の「ビュー」との対比で使われます。
行を唯一に特定するための列に設定する制約。「一意性制約(重複不可)」と「非NULL制約(空値不可)」の両方を自動的に含みます。
値の重複を許さない制約。主キー以外で重複させたくない列(メールアドレス等)に使います。NULL値の重複は許可される点に注意。
外部キーの値が、参照先の表に必ず存在することを保証する制約。データの親子関係を維持します。
列に格納できる値の範囲や条件を指定します(例:年齢 >= 0)。
行挿入時に値が指定されなかった場合に格納される「既定値」を定義します。
列制約:特定の1列の定義横に書く制約。
表制約:全列の定義の後に書く制約。「複数列を組み合わせた主キー」を定義する場合は表制約が必須です。
SELECT文によって導出される仮想的な表。ディスク領域を節約しつつ、特定の行・列だけをユーザーに見せる(隠蔽する)ことが可能です。
ビューへの更新操作を、そのまま基底表へ反映できるビュー。集計関数、DISTINCT、GROUP BY、結合などを含む場合は更新不可となります。
GRANT:権限を付与する。 REVOKE:権限を取り消す。
SELECT, INSERT, UPDATE, DELETEなどが対象。WITH GRANT OPTIONを付けると、もらった権限を他人に付与できるようになります。
特定の表に対する更新処理(INSERT/UPDATE/DELETE)を契機に、あらかじめ定義したSQL文を自動実行する仕組み。
親表の行が削除された際、それを参照している子表の行も連鎖的に削除する設定。
この記事へのコメント