MySQL 速習チュートリアル

MySQL ALTER TABLE 文

1. MySQL ALTER TABLE 文の概要

ALTER TABLE ステートメントは、既存のテーブルにおけるカラム(列)の追加、削除、または変更を行うために使用されます。
また、既存のテーブルに対してさまざまな制約(Constraints)を追加したり、削除したりする場合にも ALTER TABLE ステートメントが使用されます。

一般的な ALTER TABLE の操作は以下の通りです:

  • カラムの追加 (Add column) - テーブルに新しいカラムを追加する
  • カラムの削除 (Drop column) - テーブル内のカラムを削除する
  • カラム名の変更 (Rename column) - カラムの名前を変更する
  • カラムの変更 (Modify column) - カラムのデータ型、サイズ、または制約を変更する
  • 制約の追加 (Add constraint) - 新しい制約を追加する
  • テーブル名の変更 (Rename table) - テーブルの名前を変更する

2. ALTER TABLE - カラムの追加 (ADD Column)

テーブルにカラムを追加するには、以下の構文を使用します。

構文

ALTER TABLE table_name
ADD column_name datatype;

次の SQL は、"Customers" テーブルに "Email" カラムを追加する例です。

実行例

/* 自分専用の SQL サーバーを取得 */
ALTER TABLE Customers
ADD Email varchar(255);

3. ALTER TABLE - カラムの削除 (DROP COLUMN)

テーブル内のカラムを削除するには、以下の構文を使用します。

構文

ALTER TABLE table_name
DROP COLUMN column_name;

次の SQL は、"Customers" テーブルから "Email" カラムを削除する例です。

実行例

ALTER TABLE Customers
DROP COLUMN Email;

4. ALTER TABLE - カラム名の変更 (RENAME COLUMN)

テーブル内のカラム名を変更するには、以下の構文を使用します。

構文

ALTER TABLE table_name
RENAME COLUMN old_name TO new_name;

5. ALTER TABLE - データ型の変更 (MODIFY Datatype)

テーブル内のカラムのデータ型、サイズ、または制約を変更するには、以下の構文を使用します。

構文

ALTER TABLE table_name
MODIFY column_name new_datatype constraint;

次の SQL は、"Email" カラムのサイズを varchar(100) に変更し、さらに NOT NULL 制約を追加する例です。

実行例

ALTER TABLE Customers
MODIFY Email varchar(100) NOT NULL;

6. ALTER TABLE - 制約の追加 (ADD CONSTRAINT)

既存のテーブルに制約を追加するには、以下の構文を使用します。

構文

ALTER TABLE table_name
ADD CONSTRAINT constraint_name constraint_definition;

次の SQL は、"CHK_Age" という名前の CHECK 制約を追加し、"Age" カラムの値が18以上であることを保証する例です。

実行例

ALTER TABLE Members
ADD CONSTRAINT CHK_Age CHECK (Age >= 18);

7. ALTER TABLE - テーブル名の変更 (Rename table)

テーブルそのものの名前を変更するには、以下の構文を使用します。

構文

ALTER TABLE table_name
RENAME TO new_table_name;

次の SQL は、"Customers" テーブルの名前を "Clients" に変更する例です。

実行例

ALTER TABLE Customers
RENAME TO Clients;

8. MySQL ALTER TABLE の具体例

次のような "Persons" テーブルがあると仮定します。

IDLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger

ここで、"Persons" テーブルに "DateOfBirth" という名前のカラムを追加したいとします。
その場合、以下の SQL ステートメントを使用します。

実行例

ALTER TABLE Persons
ADD DateOfBirth date;

新しいカラム "DateOfBirth" の型は date であり、日付データを保持することに注意してください。データ型は、そのカラムがどのような種類のデータを保持できるかを指定するものです。MySQL で利用可能なすべてのデータ型のリファレンスについては、当サイトの「データ型リファレンス」を参照してください。

これで、"Persons" テーブルは以下のようになります。

IDLastNameFirstNameAddressCityDateOfBirth
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger

8.1 データ型の変更例

次に、"Persons" テーブルの "DateOfBirth" カラムのデータ型を変更したいとします。
以下の SQL ステートメントを使用します。

実行例

ALTER TABLE Persons
MODIFY COLUMN DateOfBirth year;

これで、"DateOfBirth" カラムの型が year になり、2桁または4桁の形式で年を保持するようになります。

8.2 カラム削除の例

次に、"Persons" テーブルから "DateOfBirth" という名前のカラムを削除したいとします。
以下の SQL ステートメントを使用します。

実行例

ALTER TABLE Persons
DROP COLUMN DateOfBirth;

"Persons" テーブルは再び以下のようになります。

IDLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger