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 を付けて足す | できる。既存の行にはその値が入る |
順番で解く方法もあります。
| 手順 | すること |
|---|---|
| 1 | NULLを許す形で列を足す |
| 2 | 既存の行に値を入れる(UPDATE) |
| 3 | NOT 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