CREATE TABLEとALTER TABLE(CREATE TABLE / ALTER TABLE)

分類
テクノロジ系 データベース
出る試験
基本情報応用情報
重要度
★★★☆☆

表そのものを作る命令と、作った表の定義を変える命令。列を足す・消す、制約を足す・外すときに使う。

もう少し詳しい説明

SQLの命令は、何を扱うかで3つに分かれます。

分類扱うもの命令の例
定義(DDL)表そのものの形CREATE、ALTER、DROP
操作(DML)表の中のデータSELECT、INSERT、UPDATE、DELETE
制御(DCL)権限と確定GRANT、REVOKE、COMMIT、ROLLBACK

「表を作る・変える」と「データを入れる・直す」は別の分類です。 ここが選択肢として並びます。

CREATE TABLE

表を新しく作る命令です。

CREATE TABLE 受講者 (
  受講者コード  CHAR(8)      NOT NULL,
  氏名          VARCHAR(40)  NOT NULL,
  区分          CHAR(1)      NOT NULL,
  登録日        DATE,
  PRIMARY KEY (受講者コード),
  CHECK (区分 IN ('1', '2'))
)
書く場所中身
列の行列名、データ型、長さ、NOT NULL、DEFAULT
まとめて書く行PRIMARY KEY、FOREIGN KEY、CHECK

複数の列をまとめて主キーにするときは、下にまとめて書きます。 列の行には1列分しか書けません。

PRIMARY KEY (受講者コード, 講座コード)

ALTER TABLE

作った表の定義を変える命令です。

したいこと書き方
列を足すALTER TABLE 表名 ADD COLUMN 列名 型
列を消すALTER TABLE 表名 DROP COLUMN 列名
列の定義を変えるALTER TABLE 表名 ALTER COLUMN 列名 …
制約を足すALTER TABLE 表名 ADD CONSTRAINT 制約名 …
制約を外すALTER TABLE 表名 DROP CONSTRAINT 制約名

ADDとDROPが対になっています。 足すのがADD、消すのがDROPです。

列を足すときの注意

既に行が入っている表に NOT NULL の列を足せません。

状況結果
行が1件も無い表に NOT NULL の列を足すできる
行が入っている表に NOT NULL の列を足す既存の行の値が決まらないので失敗する
DEFAULT を付けて足すできる。既存の行にはその値が入る

順番で解く方法もあります。

手順すること
1NULLを許す形で列を足す
2既存の行に値を入れる(UPDATE)
3NOT NULL を付ける(ALTER)

列を消すときのCASCADE

その列を使っているものが他にあると、そのままでは消せません。

書き方動き
DROP COLUMN 列名 RESTRICTその列に依存するものがあれば失敗する
DROP COLUMN 列名 CASCADE依存するもの(ビュー、制約など)も一緒に消す

CASCADEは「連鎖して消す」という意味です。 意図せず他のものまで消えるので、何が依存しているかを先に調べる形になります。

同じ語が、外部キーの参照動作にも出てきます。どちらも「連鎖する」という意味ですが、連鎖する対象が違います。

書かれる場所連鎖するもの
DROP COLUMN に付く CASCADE定義(ビューや制約)
ON DELETE CASCADE行(参照している側の行)

DROP TABLEとの違い

命令消えるもの
DROP TABLE表そのもの。定義もデータも消える
DELETE行だけ。表は残る
TRUNCATE TABLE行を全部消す。表は残る。DELETEより速い

DROPとDELETEの取り違えは、戻せない結果になります。 DROP TABLEは定義ごと消えるので、作り直しが必要です。

試験ではこう出る

科目A(旧・午前)では、命令の分類が問われます。表を作るのがCREATE、定義を変えるのがALTER、行を直すのがUPDATEです。

DROPとDELETEの違いも出ます。表ごとか、行だけかです。

午後や応用情報(データベース)では、ALTER TABLE の空欄を埋める形で出ます。ADD COLUMN、DROP COLUMN、ADD CONSTRAINT のどれが入るかです。解答群が無く、自分で書くことがあるので、語の並び順も覚えておく必要があります。

関連する用語

SELECT文の基本(SELECT・FROM・WHERE)
データを取り出す側の命令。表の定義を変える命令とは役割が違う
定義域制約とデータ型
列を宣言するときに決める中身
外部キー
別の表を指す列。宣言はこの命令の中で行う
SQLの権限(GRANT・REVOKE)
誰に何を許すかを決める命令。同じく定義を扱う側

ミニクイズ

既にある表に新しい列を1つ追加するSQLはどれか。

正解は 1番:ALTER TABLE 受講者 ADD COLUMN 勤務先 VARCHAR(40)

既にある表の定義を変えるのはALTER TABLEで、列を足すときはADD COLUMNを続けます。CREATE TABLEは表を新しく作る命令なので、既にある表には使えません。UPDATEは行の値を書き換える命令、INSERTは行を足す命令で、どちらも列そのものを増やすものではありません。定義を変える命令と、データを操作する命令の区別が要点です。

間違えた用語の復習リストを見る →

この分野をまとめて解く → データベースのミニテスト(全35問)

最終更新:2026-11-09