SQLの絵本 - 付録

SQLの絵本―データベースがみるみるわかる9つの扉のメモ。

構成を変更する

ALTER TABLEにより列やテーブルの構成を変更できる。RDBMSにより記述が大きく異なる場合が多く、以下ではMySQLの場合を例にしている。

列の追加
ALTER TABLE tbl_book ADD writer VARCHAR(30);

デフォルト値も指定できるが、既存の行にはNULL値が入る。

列の削除
ALTER TABLE tbl_book DROP price;
制約を追加する
ALTER TABLE tbl_keiri ADD PRIMARY KEY(denpyo_bango);
テーブル名を変更する
ALTER TABLE tbl_book RENAME TO tbl_hon; -- tbl_bookが元のテーブル名、tbl_honが新しいテーブル名
列名を変更する
ALTER TABLE tbl_book CHANGE code b_no INTEGER; -- codeは元の列名、b_noが新しい列名
デフォルト値の追加
ALTER TABLE tbl_book ALTER COLUMN book_no SET DEFAULT 100;

既存の値は影響を受けない。

デフォルト値の削除
ALTER TABLE tbl_book ALTER book_no DROP DEFAULT;

既存の値は影響を受けない。

データ型の変更
ALTER TABLE tbl_book MODIFY writer VARCHAR(20);

外部キー

  • tbl_bのnoの値はtbl_aの主キーであるnoの列の値のどれかでなければならない、というような制約があるとき、tbl_bのnoは外部キーと呼ばれる。
  • 外部キーはtbl_aのnoを参照するので参照キーとも呼ぶ。
  • 外部キーが参照する列は親キーと呼び、親キーを持つテーブルを親テーブル、外部キーをもつテーブルを子テーブルと呼ぶ。
  • 親キーの値を変更したとき小キーの値を自動的に変更させられる(連鎖更新)
  • 親テーブルの値を削除したとき対応する小テーブルの値を削除させられる(連鎖削除)
  • 親テーブルを小テーブルより先に削除してはならない
  • 小テーブルの外部キーは必ず親テーブルの親キーに存在していなければならない
外部キーの設定

テーブル作成時に外部キーを設定する場合、REFERENCESにより親テーブルと親キーを指定する。

no INT REFERENCES tbl_book(code)

テーブル制約としても指定できる。

FOREIGN KEY (no) REFERENCES tbl_book(code)

ALTER TABLEにより後から追加することも出来る。

ALTER TABLE tbl_ehon ADD FOREIGN KEY(no) REFERENCES tbl_book(code);