IPA|情報処理技術者試験

SELECT 以外の SQL 完全ガイド|CREATE・UPDATE・制約・RESTRICT の午後試験対策

SQL といえば SELECT 句ばかりに目が行きがちですが、実務で本当に求められるのは「テーブルを設計・操作できるスキル」です。
CREATE TABLE で新たなテーブルを定義し、ALTER TABLE で列や制約を追加・変更し、INSERTUPDATE でデータを操作する──これらはいずれも、「データベースを扱う力」そのものです。

特に IPA 系試験(基本情報・応用情報・データベーススペシャリストなど)の午後問題では、「SELECT 以外」の SQL を使ってテーブル設計の知識やデータ操作の流れを問う問題が頻出しています。
単に構文を覚えるだけでなく、「この場面ではこの命令をどう使うべきか?」という文脈理解が問われるのです。

この記事では、CREATEALTERDROPINSERTUPDATEDELETE など、SELECT 以外の主要 SQL 構文を実務・試験の両面から体系的に整理し、それぞれに現場的な使用例も添えて解説していきます。
特に「制約(制限)」や「参照整合性(FOREIGN KEY)」など、初心者が混乱しやすいポイントは、図や具体的なテーブル例で丁寧に補足します。

目次

テーブル定義構文の基本│CREATE TABLE・ALTER TABLE・DROP の使い方と注意点

データベースにおけるテーブル定義は、「設計図作り」に相当します。
どんな項目(列)があるのか、主キーは何か、他のテーブルとどう関連するか──これらを正しく定義することで、後続のデータ操作や検索の効率・整合性が決まります。

📘 CREATE TABLE:新しいテーブルを作成する

CREATE TABLE 社員 (
  社員ID INT PRIMARY KEY,
  氏名 VARCHAR(50),
  部署ID INT,
  入社日 DATE
);
  • PRIMARY KEY で主キーを指定
  • データ型(INT, VARCHAR, DATEなど)を明示
  • テーブル設計の最初のステップ

📘 ALTER TABLE:既存テーブルを変更する

ALTER TABLE 社員 ADD メールアドレス VARCHAR(100);

制約追加の例:

ALTER TABLE 社員 ADD CONSTRAINT fk_部署
FOREIGN KEY (部署ID) REFERENCES 部署(部署ID);
  • 列の追加、削除、制約の追加などに使用
  • 試験では「外部キー制約を後から追加する」ケースが頻出

📘 DROP TABLE:テーブルを完全に削除する

DROP TABLE 社員;
  • テーブル定義+中のデータもすべて削除
  • 誤って実行すると復元困難なので注意

✅ 試験と実務でのポイント整理(表)

構文 主な用途 試験での注意点 実務での注意点
CREATE テーブル新規作成 主キー・データ型の指定 設計ミスは後から修正困難
ALTER テーブル変更 外部キー追加など出題多 既存データへの影響を確認
DROP テーブル削除 意図確認問題で出題 実務では慎重に扱うべき

SQLのデータ操作構文│INSERT・UPDATE・DELETEの基本と午後試験での出題例

テーブルを作っただけではデータベースは機能しません。
そこに「データを入れる」「更新する」「削除する」──この一連の流れを扱うのが、INSERTUPDATEDELETE です。
これらは実務でも頻繁に使われ、IPA 試験の午後問題では、データの遷移や履歴の追跡などの文脈で出題されます。

📘 INSERT:データを追加する

INSERT INTO 社員 (社員ID, 氏名, 部署ID, 入社日)
VALUES (1001, '田中 太郎', 2, '2023-04-01');
  • 必ず列名と値の順序を合わせること
  • NOT NULL 制約や型ミスマッチでエラーになることも

📘 UPDATE:既存データを更新する

UPDATE 社員 SET 部署ID = 3 WHERE 社員ID = 1001;
  • WHERE が抜けると全行更新という致命的ミスに
  • 試験では「一部の条件を満たすデータだけを更新」する問題が多い

📘 DELETE:データを削除する

DELETE FROM 社員 WHERE 社員ID = 1001;
  • WHERE を忘れるとテーブル内すべて削除
  • 外部キー制約があると削除できないケースもあり(後述)

✅ 操作用構文の比較表

構文 主な機能 試験での注意点 実務での注意点
INSERT 新規データ追加 制約・型エラーの判断 自動採番の扱いに注意
UPDATE 一部データ更新 条件指定の精度 バックアップ推奨
DELETE データ削除 削除条件の検証 参照整合性に影響あり

SQLの制約(制限)構文│NOT NULL・UNIQUE・外部キーの意味と午後試験での扱い

SQL における「制約(constraint)」は、データの正しさや整合性を保証するためのルールです。
テーブル定義時や ALTER TABLE で追加し、意図しない重複や NULL 値、外部キー違反などを防ぎます。

IPA 試験では「このテーブル定義でどんな入力がエラーになるか」「参照整合性がどう影響するか」など、制約の意味を正しく理解しているかがよく問われます。

📘 NOT NULL:NULL(空)を禁止する

氏名 VARCHAR(50) NOT NULL
  • この列には 必ず値が必要
  • INSERT 時に値を省略するとエラー
  • 試験では「NOT NULL 制約があるのでこの操作は失敗する」などの出題あり

📘 UNIQUE:重複禁止

メールアドレス VARCHAR(100) UNIQUE
  • 同じ値が他の行に存在してはいけない
  • 主キーほど厳密ではないが「候補キー」扱いされることも

📘 CHECK:値に条件をつける

給与 INT CHECK (給与 > 0)
  • 特定列に「正の値のみ」などのルールを課す
  • 実務ではあまり使われないが、試験では制約によるエラー判断で出題される

📘 PRIMARY KEY:行を一意に識別する列(または列の組)

社員ID INT PRIMARY KEY
  • NOT NULLUNIQUE の組み合わせ
  • テーブルごとに 1つのみ 指定可能

📘 FOREIGN KEY:他テーブルとの参照整合性を保つ

部署ID INT,
FOREIGN KEY (部署ID) REFERENCES 部署(部署ID)
  • 「親テーブルに存在しない値は登録できない」
  • DELETE できない・UPDATE に制限がかかるなど、連動制御の出題が多い

✅ 制約構文の比較表

制約 機能 主な用途 試験での出題傾向
NOT NULL NULL禁止 必須入力欄の指定 入力エラーの原因として出題
UNIQUE 重複禁止 候補キーの制約 同一データの制限判断
CHECK 条件付き制限 数値制限や範囲 「このデータは挿入できるか?」判断問題
PRIMARY KEY 主キー指定 行の一意性保証 複合キー・主キー判定問題
FOREIGN KEY 外部キー参照 他テーブルとの整合性 削除・更新時の影響分析問題

RESTRICT・CASCADE・SET NULLとトランザクション制御│午後試験で頻出の整合性オプション

データベースでは、テーブル間に外部キー制約がある場合、関連するデータを削除・更新した際にどう反応するかを指定する必要があります。
それが ON DELETEON UPDATE に指定される「RESTRICT」「CASCADE」「SET NULL」などの整合性オプションです。

さらに、COMMITROLLBACK を用いたトランザクション制御も試験では頻出です。
ここでは、データ整合性の確保という観点から、これらの機能を解説します。

📘 RESTRICT:制限(削除・更新を禁止)

FOREIGN KEY (部署ID)
REFERENCES 部署(部署ID)
ON DELETE RESTRICT
  • 親テーブルの該当行を削除・更新できない
  • 子テーブルに関連データがあるとエラー
  • 試験では「エラーになる操作はどれか」でよく問われる

📘 CASCADE:連動して削除・更新

ON DELETE CASCADE
  • 親が削除されると、子も自動で削除される
  • UPDATE でも連動可(ON UPDATE CASCADE
  • 実務では使い所を誤ると「予期しない大量削除」の原因に

📘 SET NULL:子を NULL にする

ON DELETE SET NULL
  • 親が削除されると、子の外部キー列を NULL に
  • 子テーブル側が NOT NULL 制約を持っているとエラー

✅ 整合性オプションの比較表

オプション 動作 安全性 試験の出題ポイント
RESTRICT 子が存在 → 親を削除不可 高い 「エラーとなる操作はどれか」系
CASCADE 親削除 → 子も削除 低い(誤操作に注意) 連動削除・更新の可否
SET NULL 子の外部キーをNULLに 中(NULL許容が条件) NOT NULL制約との組み合わせ

📘 トランザクション制御:処理の「ひとまとまり」を保証

BEGIN;
UPDATE 口座 SET 残高 = 残高 - 10000 WHERE 口座ID = 1;
UPDATE 口座 SET 残高 = 残高 + 10000 WHERE 口座ID = 2;
COMMIT;
  • 複数の操作を「一括処理」する枠組み
  • 一部失敗した場合に全体を無効にするには ROLLBACK を使う
  • 試験では「途中でエラー → ROLLBACKされる?」という形式で問われる

まとめ│午後試験で問われるSQL構文を実務目線で整理

SQL を使いこなすには、SELECT 句だけでなく、テーブルやデータの設計・操作に関わる構文群を正しく理解しておくことが不可欠です。
特に IPA の午後試験では、「テーブル定義・制約・データ操作・整合性の保証」に関する知識が、実装の正しさやデータ品質の維持に直結するスキルとして評価されます。

✅ 本記事のポイントまとめ

  • テーブル定義: CREATE TABLEALTER TABLE を使って、列・主キー・制約を定義
  • データ操作: INSERTUPDATEDELETE で行単位のデータを安全に変更
  • 制約の活用: NOT NULLUNIQUEPRIMARY KEYFOREIGN KEY などで整合性を担保
  • 整合性オプション: RESTRICTCASCADESET NULL により、参照関係の動作を明示
  • トランザクション: BEGINCOMMIT / ROLLBACK による一括処理で安全性を確保

午後試験では、これらの構文の「意味」や「制約によるエラーの有無」「操作結果」などを、文脈に応じて判断する力が問われます。
構文を暗記するだけでなく、なぜその制約が必要か、実務でどう使うかまで意識することで、応用力のある SQL スキルが身につきます。

-IPA|情報処理技術者試験