SQL ALTER TABLE 文
1. SQL ALTER TABLE 文
ALTER TABLE 文は、既存のテーブルに対してカラム(列)の追加、削除、または変更を行うために使用されます。
また、既存のテーブルに対してさまざまな制約(Constraints)を追加したり、削除したりする場合にも使用されます。
1.1 主な ALTER TABLE 操作
一般的に使用される ALTER TABLE の操作は以下の通りです。
- カラムの追加 (Add column) - テーブルに新しいカラムを追加します。
- カラムの削除 (Drop column) - テーブル内のカラムを削除します。
- カラム名の変更 (Rename column) - カラムの名前を変更します。
- カラムの変更 (Modify column) - カラムのデータ型、サイズ、または制約を変更します。
- 制約の追加 (Add constraint) - 新しい制約を追加します。
- テーブル名の変更 (Rename table) - テーブルの名前を変更します。
2. ALTER TABLE - カラムの追加 (ADD Column)
テーブルにカラムを追加するには、以下の構文を使用します。
2.1 構文
ALTER TABLE テーブル名
ADD カラム名 データ型;次の SQL は、「Customers」テーブルに「Email」カラムを追加する例です。
実行例:
ALTER TABLE Customers
ADD Email varchar(255);3. ALTER TABLE - カラムの削除 (DROP COLUMN)
テーブル内のカラムを削除するには、以下の構文を使用します(一部のデータベースシステムではカラムの削除が許可されていない場合があることに注意してください)。
3.1 構文
ALTER TABLE テーブル名
DROP COLUMN カラム名;次の SQL は、「Customers」テーブルから「Email」カラムを削除します。
実行例:
ALTER TABLE Customers
DROP COLUMN Email;4. ALTER TABLE - カラム名の変更 (RENAME COLUMN)
テーブル内のカラム名を変更するには、以下の構文を使用します。
4.1 構文
ALTER TABLE テーブル名
RENAME COLUMN 旧カラム名 TO 新カラム名;SQL Server でカラム名を変更する場合は、以下の構文(ストアドプロシージャ)を使用します。
4.2 SQL Server での構文
EXEC sp_rename 'テーブル名.旧カラム名', '新カラム名', 'COLUMN';5. ALTER TABLE - データ型の変更 (MODIFY Datatype)
カラムのデータ型、サイズ、または制約を変更するには、以下の構文を使用します。
5.1 SQL Server / MS Access での構文
ALTER TABLE テーブル名
ALTER COLUMN カラム名 新データ型 制約;5.2 MySQL / Oracle での構文
ALTER TABLE テーブル名
MODIFY カラム名 新データ型 制約;次の SQL は、「Email」カラムのサイズを varchar(100) に変更し、さらに NOT NULL 制約を追加する例です。
実行例:
ALTER TABLE Customers
MODIFY Email varchar(100) NOT NULL;6. ALTER TABLE - 制約の追加 (ADD CONSTRAINT)
既存のテーブルに制約を追加するには、以下の構文を使用します。
6.1 構文
ALTER TABLE テーブル名
ADD CONSTRAINT 制約名 制約の定義;次の SQL は、「Age」カラムの値が 18 以上であることを保証する CHECK 制約(制約名: CHK_Age)を「Members」テーブルに追加します。
実行例:
ALTER TABLE Members
ADD CONSTRAINT CHK_Age CHECK (Age >= 18);7. ALTER TABLE - テーブル名の変更 (Rename table)
テーブルそのものの名前を変更するには、以下の構文を使用します。
7.1 構文
ALTER TABLE 旧テーブル名
RENAME TO 新テーブル名;次の SQL は、「Customers」テーブルの名前を「Clients」に変更します。
実行例:
ALTER TABLE Customers
RENAME TO Clients;8. SQL ALTER TABLE の実践例
次のような「Persons」テーブルがあると仮定します。
| ID | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
ここで、「Persons」テーブルに「DateOfBirth」という名前のカラムを追加したいとします。その場合、以下の SQL ステートメントを使用します。
実行例:
ALTER TABLE Persons
ADD DateOfBirth date;新しいカラム「DateOfBirth」の型は date であり、日付を保持するように指定されています。データ型は、そのカラムがどのようなデータを保持できるかを定義するものです。
変更後の「Persons」テーブルは以下のようになります。
| ID | LastName | FirstName | Address | City | DateOfBirth |
|---|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes | |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes | |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
8.1 データ型の変更例
次に、「Persons」テーブルの「DateOfBirth」カラムのデータ型を変更したいとします。
実行例:
ALTER TABLE Persons
ALTER COLUMN DateOfBirth year;これにより、「DateOfBirth」カラムの型は year になり、2桁または4桁形式の年を保持するようになります。
8.2 カラム削除の例
最後に、「Persons」テーブルから「DateOfBirth」カラムを削除します。
実行例:
ALTER TABLE Persons
DROP COLUMN DateOfBirth;「Persons」テーブルは、再び元の状態に戻ります。
| ID | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |