SQL といえば SELECT
句ばかりに目が行きがちですが、実務で本当に求められるのは「テーブルを設計・操作できるスキル」です。
CREATE TABLE
で新たなテーブルを定義し、ALTER TABLE
で列や制約を追加・変更し、INSERT
や UPDATE
でデータを操作する──これらはいずれも、「データベースを扱う力」そのものです。
特に IPA 系試験(基本情報・応用情報・データベーススペシャリストなど)の午後問題では、「SELECT 以外」の SQL を使ってテーブル設計の知識やデータ操作の流れを問う問題が頻出しています。
単に構文を覚えるだけでなく、「この場面ではこの命令をどう使うべきか?」という文脈理解が問われるのです。
この記事では、CREATE
、ALTER
、DROP
、INSERT
、UPDATE
、DELETE
など、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の基本と午後試験での出題例
テーブルを作っただけではデータベースは機能しません。
そこに「データを入れる」「更新する」「削除する」──この一連の流れを扱うのが、INSERT
・UPDATE
・DELETE
です。
これらは実務でも頻繁に使われ、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 NULL
+UNIQUE
の組み合わせ- テーブルごとに 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 DELETE
や ON UPDATE
に指定される「RESTRICT」「CASCADE」「SET NULL」などの整合性オプションです。
さらに、COMMIT
や ROLLBACK
を用いたトランザクション制御も試験では頻出です。
ここでは、データ整合性の確保という観点から、これらの機能を解説します。
📘 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 TABLE
やALTER TABLE
を使って、列・主キー・制約を定義 - データ操作:
INSERT
、UPDATE
、DELETE
で行単位のデータを安全に変更 - 制約の活用:
NOT NULL
、UNIQUE
、PRIMARY KEY
、FOREIGN KEY
などで整合性を担保 - 整合性オプション:
RESTRICT
、CASCADE
、SET NULL
により、参照関係の動作を明示 - トランザクション:
BEGIN
~COMMIT
/ROLLBACK
による一括処理で安全性を確保
午後試験では、これらの構文の「意味」や「制約によるエラーの有無」「操作結果」などを、文脈に応じて判断する力が問われます。
構文を暗記するだけでなく、なぜその制約が必要か、実務でどう使うかまで意識することで、応用力のある SQL スキルが身につきます。