本文へスキップ
BecomeCoder

SQL テーブル設計 (DDL)コース · 第1章 テーブルを設計する · レッスン7

ALTER TABLE と DROP TABLE ― 変更と削除

ブラウザで完結

導入

一度作ったテーブルも、後から作り替えられます。「列を追加したい」「名前を変えたい」「もう要らないので消したい」――こうした変更に使うのが ALTER TABLEDROP TABLE です。CREATE TABLE とあわせて、DDL の基本がひととおりそろいます。

説明

列を追加するADD COLUMN

ALTER TABLE users ADD COLUMN email TEXT;

追加した列は、既存の行では空(NULL)になります。SELECT * FROM users; で新しい email 列が増えたことを確認できます。

列の名前を変えるRENAME COLUMNテーブルの名前を変えるRENAME TO

ALTER TABLE users RENAME COLUMN city TO prefecture;
ALTER TABLE users RENAME TO members;

ALTER TABLE でできることは DB 製品によって差があります。SQLite は「列の追加・列名変更・表名変更」などに対応しますが、既存列への制約の後付けは限定的です。MySQL / PostgreSQL では ALTER TABLE ... MODIFY などでより多くの変更ができます。

テーブルごと消すDROP TABLE。中のデータも定義もまとめて消えます。元に戻せない操作です。

flowchart LR
    DEL["DELETE FROM t<br/>中の“行”を消す(表は残る)"]
    DRP["DROP TABLE t<br/>“表そのもの”を消す(定義ごと消える)"]
    DEL --- VS["≠"] --- DRP
DROP TABLE suppliers;

存在しないテーブルを消そうとするとエラーになります。「あれば消す」にしたいときは IF EXISTS を付けます(スクリプトの作り直しでよく使います)。

DROP TABLE IF EXISTS suppliers;

やってみよう

初期表示の ALTER TABLE users ADD COLUMN email TEXT; を実行し、SELECT * FROM users;email 列が増えたことを確認しましょう。次に自分で CREATE TABLE temp (id INTEGER); を作り、DROP TABLE temp; で消してみてください。

演習

まず CREATE TABLE tags (id INTEGER PRIMARY KEY); でテーブルを作り、そこに label という文字列(TEXT)の列を追加してください。

ヒント1を見る

列の追加は ALTER TABLE テーブル名 ADD COLUMN 列名 型; の形です。

ヒント2を見る

ALTER TABLE tags ADD COLUMN label TEXT;(先に CREATE TABLE tags (id INTEGER PRIMARY KEY); を実行しておきます)

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。