対象試験と出題頻度

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(データ定義言語) CREATEALTERDROP
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 ― テーブルを新しく作る

CREATE TABLE 商品 (
  商品番号 INT,
  商品名 VARCHAR(50),
  単価 INT
);

▼ 作成直後のテーブル

商品番号 商品名 単価
(まだデータなし)

運用開始後に構造変更が必要になったら

② ALTER TABLE ― テーブルの構造を変更する

— 列の追加
ALTER TABLE 商品
  ADD 在庫数 INT;

— 列の削除
ALTER TABLE 商品
  DROP COLUMN 単価;

▼ 変更後のテーブル(単価削除・在庫数追加)

商品番号 商品名 在庫数 ← 新規追加
001 ノートPC NULL
002 マウス NULL

※ 単価列は消え、在庫数列が追加。既存データは保持される

テーブル自体が不要になったら

③ DROP TABLE ― テーブルを丸ごと削除する

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の選択肢として登場した実績はありますが、深追いは不要です。