概要: このチュートリアルでは、SQL ALTER TABLE
ステートメントを使用して、データベース内の既存のテーブルの構造を変更する方法を説明します。
新しいテーブルを作成した後、ビジネス要件の変更に伴い、テーブルの構造を変更する必要がある場合があります。テーブルの構造を変更するには、ALTER TABLE
ステートメントを使用します。ALTER TABLE
ステートメントを使用すると、既存のテーブルに対して次の操作を実行できます。
ADD
句を使用して新しい列を追加する。MODIFY
句を使用して、制約、デフォルト値などの列の属性を変更する。DROP
句を使用して列を削除する。
以下のセクションでは、各操作について詳しく説明します。
SQL ALTER TABLE ADD column(列の追加)
次のステートメントは、テーブルに1つ以上の列を追加できる ADD
句を含む ALTER TABLE
ステートメントを示しています。
ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];
Code language: SQL (Structured Query Language) (sql)
テーブルに1つ以上の列を追加するには、次の手順を実行する必要があります。
- まず、
ALTER TABLE
句の後に、列を追加するテーブルをtable_name
で指定します。 - 次に、
ADD
句の後に新しい列の定義を配置します。テーブル内の新しい列の順序を指定する場合は、オプションの句AFTER existing_column
を使用できます。
AFTER
句を省略すると、すべての新しい列がテーブルの最後の列の後に追加されます。
テーブル作成チュートリアルで作成した courses
テーブルに新しい列を追加する例をいくつか見てみましょう。

次のステートメントは、courses
テーブルに credit_hours
という名前の新しい列を追加します。
ALTER TABLE courses ADD credit_hours INT NOT NULL;
Code language: SQL (Structured Query Language) (sql)
1つの ALTER TABLE
ステートメントを使用して、テーブルに複数の列を追加できます。たとえば、次のステートメントは、courses
テーブルに fee
列と max_limit
列を追加し、これらの列を course_name
列の後に配置します。
ALTER TABLE courses
ADD fee NUMERIC (10, 2) AFTER course_name,
ADD max_limit INT AFTER course_name;
Code language: SQL (Structured Query Language) (sql)
SQL ALTER TABLE MODIFY column(列の変更)
MODIFY
句を使用すると、既存の列の属性(例:NOT NULL
、UNIQUE
、データ型)を変更できます。
次のステートメントは、DROP
句を含む ALTER TABLE
ステートメントの構文を示しています。
ALTER TABLE table_name
MODIFY column_definition;
Code language: SQL (Structured Query Language) (sql)
データがないテーブルの列の属性を変更する必要があります。これは、既にデータがあるテーブルの列の属性を変更すると、データが永久に失われる可能性があるためです。
たとえば、列のデータ型が VARCHAR
で、それを INT
に変更する場合、データベースシステムはデータを VARCHAR
から INT
に変換する必要があります。変換が失敗した場合、データベースシステムは列のデフォルト値を使用する可能性があり、これは予期しない結果になる可能性があります。
次の ALTER TABLE MODIFY
ステートメントは、fee
列の属性を NOT NULL
に変更します。
ALTER TABLE courses
MODIFY fee NUMERIC (10, 2) NOT NULL;
Code language: SQL (Structured Query Language) (sql)
SQL ALTER TABLE DROP columns(列の削除)
テーブルの列が obsolete で、トリガー、ビュー、ストアドプロシージャなどの他のデータベースオブジェクトで使用されていない場合は、テーブルから削除する必要があります。
1つ以上の列を削除するには、次の構文を使用します。
ALTER TABLE table_name
DROP column_name,
DROP colum_name,
...
Code language: SQL (Structured Query Language) (sql)
たとえば、courses
テーブルの fee
列を削除するには、次のステートメントを使用します。
ALTER TABLE courses DROP COLUMN fee;
Code language: SQL (Structured Query Language) (sql)
複数の列を同時に削除するには、カンマ(,)で区切られた複数の DROP COLUMN
句を使用します。
たとえば、次のステートメントは、courses
テーブルの max_limit
列と credit_hours
列を削除します。
ALTER TABLE courses
DROP COLUMN max_limit,
DROP COLUMN credit_hours;
Code language: SQL (Structured Query Language) (sql)
このチュートリアルでは、SQL ALTER TABLE
ステートメントを使用して、テーブルに1つ以上の列を追加、変更、および削除する方法を段階的に学習しました。