対象試験と出題頻度
ALTER TABLE文は、基本情報技術者・応用情報技術者で出題されるテーマです。
SQLの分類(DDL / DML / DCL)を問う午前問題や、関係データベースの表定義を変更する午後問題の両方で登場します。CREATE TABLE文やDROP TABLE文との役割の違いを正確に区別できるかが鍵です。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「ALTER?CREATE やDROP は分かるけど、ALTER って何をする命令?」と引っかかる場面があります。
ALTER TABLE文とは、一言で言うと
「作成済みのテーブル(表)に対して、列の追加・削除・制約変更などの構造変更を行うSQLのDDL命令」
のことです。
イメージとしては、「既に建てた家のリフォーム工事」です。
家を建てる(CREATE TABLE)のとは違い、家を壊す(DROP TABLE)のでもなく、「部屋を増やす」「壁を取り払う」「間取りを変える」ような変更作業がALTER TABLE文の役割です。
📊 ALTER TABLE文の基本情報
| 項目 | 内容 |
|---|---|
| 正式名称 | ALTER TABLE文 |
| SQLでの分類 | DDL(Data Definition Language:データ定義言語) |
| 主な操作 | 列の追加(ADD)、列の削除(DROP)、制約の変更、デフォルト値の設定 |
| 同じDDLの仲間 | CREATE TABLE(表の作成)、DROP TABLE(表の削除) |
解説
データベースのテーブルは、一度作ったら終わりではありません。
運用が始まった後に「新しい項目が必要になった」「不要な列を消したい」「制約条件を見直したい」という変更要求は日常的に発生します。
このとき、テーブルを丸ごと作り直すのは非効率かつデータ損失のリスクがあります。
そこで、テーブル構造だけをピンポイントで変更するALTER TABLE文が使われます。
SQLの3分類とALTERの位置づけ
SQLは目的別にDDL・DML・DCLの3つに分類されます。
ALTER TABLE文がどこに属するかを押さえておくと、他の命令と混同しにくくなります。
| 分類 | 正式名称 | 代表的な命令 |
|---|---|---|
| DDL | Data Definition Language(データ定義言語) | CREATE、ALTER、DROP |
| DML | Data Manipulation Language(データ操作言語) | SELECT、INSERT、UPDATE、DELETE |
| DCL | Data Control Language(データ制御言語) | GRANT、REVOKE |
DDLは「表そのものの骨格を操作する」グループです。
データの中身を扱うSELECTやINSERT(DML)、権限を制御するGRANTやREVOKE(DCL)とは操作対象が根本的に異なります。
ALTER TABLE文の基本構文
代表的な操作は「列の追加」と「列の削除」の2つです。
それぞれの構文を見てみましょう。
— 列の追加
ALTER TABLE テーブル名 ADD 列名 データ型;
— 列の削除
ALTER TABLE テーブル名 DROP COLUMN 列名;
— 具体例:「商品」テーブルに「在庫数」列を追加
ALTER TABLE 商品 ADD 在庫数 INTEGER;
— 具体例:「商品」テーブルから「在庫数」列を削除
ALTER TABLE 商品 DROP COLUMN 在庫数;
図解:ALTER TABLE文の操作イメージ
列の追加と削除で表がどう変わるか、視覚的に確認しましょう。
ALTER TABLE ADD / DROP COLUMN の操作イメージ
▼ 変更前:商品テーブル
| 商品番号 | 商品名 | 単価 |
|---|---|---|
| 001 | ノートPC | 80000 |
| 002 | マウス | 2000 |
↓ ALTER TABLE 商品 ADD 在庫数 INTEGER;
▼ 変更後:在庫数列が追加された
| 商品番号 | 商品名 | 単価 | 在庫数 |
|---|---|---|---|
| 001 | ノートPC | 80000 | NULL |
| 002 | マウス | 2000 | NULL |
※ ADDで追加された列の既存行にはNULL(値なし)が入る
DDL3兄弟の比較:CREATE / ALTER / DROP
DDLの3つの命令は「テーブルのライフサイクル」に対応しています。
混同しやすいポイントを整理しておきましょう。
DDL 3命令の役割フロー ― テーブルのライフサイクル
① CREATE TABLE ― テーブルを新しく作る
商品番号 INT,
商品名 VARCHAR(50),
単価 INT
);
▼ 作成直後のテーブル
| 商品番号 | 商品名 | 単価 |
|---|---|---|
| (まだデータなし) | ||
運用開始後に構造変更が必要になったら
↓
② ALTER TABLE ― テーブルの構造を変更する
ALTER TABLE 商品
ADD 在庫数 INT;
— 列の削除
ALTER TABLE 商品
DROP COLUMN 単価;
▼ 変更後のテーブル(単価削除・在庫数追加)
| 商品番号 | 商品名 | 在庫数 ← 新規追加 |
|---|---|---|
| 001 | ノートPC | NULL |
| 002 | マウス | NULL |
※ 単価列は消え、在庫数列が追加。既存データは保持される
テーブル自体が不要になったら
↓
③ DROP TABLE ― テーブルを丸ごと削除する
テーブルごと消滅
構造(列定義)もデータ(行)もすべて削除される
| 命令 | 日常の例え | 操作対象 | 既存データへの影響 |
|---|---|---|---|
| CREATE | 家を新築する | テーブルを新規作成 | なし(空のテーブルが生成) |
| ALTER | リフォームする | 列の追加・削除・制約変更 | 既存データは保持される |
| DROP | 家を取り壊す | テーブルを丸ごと削除 | 構造もデータもすべて消える |
▲ テーブルの誕生→変更→廃棄のライフサイクルに対応する。ここだけは確実に押さえてください。
何となくで覚えたい人向け:ALTER TABLE文のざっくりまとめ
ALTER TABLE = 「テーブルの模様替え」
・部屋を追加(ADD)→ 列を追加する
・部屋を潰す(DROP COLUMN)→ 列を削除する
・家そのものは壊さない(DROP TABLEとは違う)
・家を新築するのでもない(CREATE TABLEとは違う)
では、この命令が試験でどのように出題されるか見ていきましょう。
💡 ALTER TABLE文の核心を3行で
・DDL(データ定義言語)に属する、テーブル構造を変更するSQL命令
・列の追加はADD、列の削除はDROP COLUMNで行う
・CREATEは新規作成、DROPは丸ごと削除、ALTERは構造の部分変更
試験ではこう出る!
ALTER TABLE文は、FE・APの両方で出題実績があります。午前では「SQLの分類を問う問題」の選択肢として、午後では「テーブル定義の変更SQL文を穴埋めさせる問題」として登場するパターンが中心です。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| AP R7秋 午後 問6 |
講座表の列追加・列削除を行うSQL文の空欄穴埋め。空欄に「ALTER」を入れさせる問題。 | ・ADD COLUMNとDROP COLUMNの構文知識 ・CASCADEオプションの理解 |
| FE R4免除 問26 |
GRANT文の説明を選ぶ問題。選択肢に「CREATE TABLE文またはALTER TABLE文の説明」が含まれていた。 | ・DDL(CREATE / ALTER)とDCL(GRANT)の区別 ・「暗号化の設定」がALTER TABLE文の機能に該当する選択肢 |
📝 IPA試験での出題パターン
パターン1:「SQL文の穴埋め」(午後問題)
テーブル定義の変更を行うSQL文が提示され、空欄に「ALTER」を記述させる形式。AP R7秋 午後問6が典型例で、ADD COLUMNやDROP COLUMNと組み合わせて出題される。
パターン2:「SQL命令の分類・説明を選べ」(午前問題)
DDL・DML・DCLの各命令の説明文が並び、それぞれの命令名と正しくマッチさせる形式。ひっかけとして、INSERT(DML)やGRANT(DCL)の説明がALTER(DDL)の説明に見えるように紛れ込む。
ALTER TABLE文自体の構文を丸暗記する必要はありません。「DDLに属する」「表の構造を変更する」「ADDで列追加、DROP COLUMNで列削除」の3点を押さえておけば、試験ではここまででOKです。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 既存のテーブルに新しい列を追加するために使用するSQL文として、最も適切なものはどれでしょうか?
- A. INSERT INTO文で、テーブルに新しい列と初期値を追加する。
- B. ALTER TABLE文のADD句で、テーブルの定義に列を追加する。
- C. CREATE TABLE文で、追加したい列を含む新しいテーブルを作成する。
正解と解説を見る
正解:B
解説:
ALTER TABLE文は、既存テーブルの構造を変更するDDL命令です。ADD句を使えば列の追加、DROP COLUMN句を使えば列の削除が行えます。
選択肢AのINSERT INTO文はDML(データ操作言語)であり、テーブルに「行(レコード)」を追加する命令です。列そのものをテーブルに加える操作はできません。選択肢CのCREATE TABLE文は新しいテーブルを一から作成する命令であり、既存テーブルの構造を変更する用途では使いません。
よくある質問(FAQ)
Q. ALTER TABLE文で列を追加すると、既存の行のデータはどうなりますか?
追加された列の既存行にはNULL(値なし)が入ります。デフォルト値を指定した場合は、そのデフォルト値が設定されます。既存のデータが消えたり壊れたりすることはありません。
Q. ALTER TABLE文とUPDATE文はどう違いますか?
ALTER TABLE文はテーブルの「構造(列やデータ型、制約)」を変更する命令です。UPDATE文はテーブルの「中身(行に格納されたデータ値)」を変更する命令です。前者はDDL、後者はDMLに分類されます。例えるなら、ALTER TABLEは「棚の段数を増やす作業」、UPDATEは「棚に置いてある商品を入れ替える作業」です。
Q. ALTER TABLE文のDROP COLUMNで「CASCADE」を付けるとどうなりますか?
CASCADEを付けると、削除対象の列に関連するインデックスや制約も同時に削除されます。AP R7秋 午後問6でもCASCADEの意味が問われました。CASCADEを付けないと、関連する制約が残っている場合にエラーとなり列を削除できない場合があります。
Q. ALTER TABLE文はテーブル以外にも使えますか?
SQL標準やDBMS製品によっては、ALTER文をテーブル以外のオブジェクト(ビュー、インデックス、ユーザー権限など)に対しても使用できます。例えばALTER USER文はユーザーのパスワード変更等に使います。ただし、IPA試験で問われるのは「ALTER TABLE」が大半です。ALTER USER文がFE R4免除 問26の選択肢として登場した実績はありますが、深追いは不要です。