SQLでテーブルを作成する場合はCREATE TABLE文を使用しますが、既存のテーブルの定義(テーブルの構造)を変更する場合はALTER TABLE文を使います。
ALTER TABLE文を使えば、テーブルや列(カラム)の名前を変更したり、列の定義を変更したりすることができます。
今回は、ALTER TABLE文を使用して、テーブルの列を追加、または削除する方法を紹介します。
テーブルを作成するCREATE TABLE文については、以下の記事を参考にしてください。
目次
使用するテーブル
本記事では、以下のテーブルを使用します。
スタッフマスタテーブル
スタッフマスタテーブル定義
スタッフマスタテーブルの定義は以下のようになります。
列名 | データ型 | 主キー |
---|---|---|
スタッフID | int | ○ |
氏名 | varchar(50) | |
パスワード | varchar(20) |
スタッフマスタテーブルのCREATE TABLE文
スタッフマスタテーブルを作成するCREATE TABLE文は、次のようになります。
1 2 3 4 5 6 |
CREATE TABLE スタッフ ( スタッフID int PRIMARY KEY, 氏名 varchar(20), パスワード varchar(20), ); |
ALTER TABLEで列を追加する
ALTER TABLEでテーブルに列を追加する場合は、ALTER TABLE テーブル名 ADD文を使います。
ALTER TABLEの後にスペース文字列(改行でも可)を入れて、その後に列を追加するテーブル名(構造を変更するテーブル名)を記述し、再びスペース文字列を入力して「ADD」を記述します。
「ADD」を入力した後にはスペース文字列を入れて、追加する列の定義を記述します。
1 |
ALTER TABLE テーブル名 ADD [COLUMN] 追加する列名 追加する列のデータ型 追加する列の制約 |
例としてスタッフテーブルに新しく列を追加してみます。
追加する列は「電話番号」とします。データ型はvarchar(20)、列の制約には、電話番号列に登録される値が重複しないようにUNIQUE制約を指定します。
1 |
ALTER TABLE スタッフ ADD [COLUMN] 電話番号 varchar(20) UNIQUE |
ALTER TABLE テーブル名 ADD文では、データベース製品によっては「COLUMN」の記述を省略することができます。
「COLUMN」の記述を省略する場合は、以下のような構文になります。
1 |
ALTER TABLE テーブル名 ADD 追加する列名 追加する列のデータ型 追加する列の制約 |
スタッフテーブルに電話番号列を追加する場合
1 |
ALTER TABLE スタッフ ADD 電話番号 varchar(20) UNIQUE |
ALTER TABLEで列を削除する
ALTER TABLEでテーブルに列を削除する場合は、ALTER TABLE テーブル名 DROP文を使います。
列を追加する際のALTER TABLE テーブル名 ADD文と同様に、ALTER TABLEの後にスペース文字列(改行でも可)を入れて、その後に列を削除するテーブル名を記述し、再びスペース文字列を入力して「DROP」を記述します。
「DROP」を入力した後にはスペース文字列を入れて、削除する列名を記述します。
1 |
ALTER TABLE テーブル名 DROP [COLUMN] 削除する列名 |
ALTER TABLE テーブル名 DROP文でも、ALTER TABLE テーブル名 ADD文と同様に、データベース製品によっては「COLUMN」の記述を省略することができます。
ALTER TABLEによる列の追加についての補足
既にあるテーブルに対して、ALTER TABLE文で追加した列は、一番最後になるのが原則です。
データベース製品によっては、列を追加(挿入)する際に任意の位置を指定できるものもあります。
列を挿入する位置を指定する場合は、AFTERキーワードを使用して、挿入する位置の前にある列を指定します。
1 |
ALTER TABLE テーブル名 ADD 挿入する列名 挿入する列のデータ型 挿入する列の制約 AFTER 挿入する位置の前にある列名 |
例えば、スタッフテーブルに「電話番号」列を追加する際に、「氏名」列と「パスワード」列の間に挿入する場合は以下のようになります。
1 |
ALTER TABLE スタッフ ADD 電話番号 varchar(20) UNIQUE AFTER 氏名 |