ALTER TABLE でテーブルのカラムを追加・変更・削除する
ALTER TABLE でテーブルのカラムを追加・変更・削除する
前回 「 他のテーブルから SELECT INTO でテーブルを作成する 」 では、 SELECT INTO 文を使って、クエリーの結果セットを元にテーブルを作成しました。
今回は、ALTER TALBE を使って、既存のテーブルのカラムを追加・変更・削除してみましょう。
こちら のスクリプトを実行して、テーブルを再生成しておいてください。 全てのテーブルは使いませんが、これらのテーブルが存在している前提で進めます。
ALTER TABLE ステートメント
ALTER TABLE ステートメントを使うと、カラムや制約の追加・変更・削除、制約やトリガーなどの有効化・無効化、パティションの再アサインや再構築を行うことができます。
ここでは、ALTER TABLE ステートメントを使った、カラムの追加・変更・削除を行ってみましょう。
ALTER TABLE でテーブルにカラムを追加する
CREATE 文と同様に、オプションや指定できる項目がたくさんありますが、シンプルに ALTER TABLE を使って [テーブル1] に [カラム1] を追加するには、次のようなスクリプトを実行します。
ALTER TABLE [テーブル1] ADD [カラム1] [データ型] [NULL or NOT NULL];
それでは、実際に ALTER TABLE 文を実行して、カラムを追加してみましょう。
このような Student テーブルがあります。
Student テーブルに電話番号を保存する PhoneNumber というカラムを追加するクエリーは次の通りです。
ALTER TABLE Student ADD PhoneNumber VARCHAR(20) NULL;
[ 実行結果 ]
PhoneNumber カラムが追加されました。
ALTER TABLE & ALTER COLUMN でテーブルにカラムを変更する
ALTER TABLE と ALTER COLUMN を使って、[テーブル1] の [カラム1] のデータ型変更するには次のように書きます。
ALTER TABLE [テーブル1] ALTER COLUMN [カラム1] [新しいデータ型];
先ほど追加した PhoneNumber カラムのデータタイプは VARCHAR(20) にしましたが、データタイプを NVARHCAR(50) に変更してみましょう。
ALTER TABLE Student ALTER COLUMN PhoneNumber NVARCHAR(50);
[ 実行結果 ]
PhoneNumber カラムのデータ型が NVARHCAR(50) に変更されました。
変更前と変更後のデータ型によっては、既にデータが入っている場合、データが失われてしまう可能性がありますので気をつけてください。 カラムの長さを増やすような変更は大丈夫です。
ALTER TABLE & DROP COLUMN でテーブルのカラムを削除する
ALTER TABLE と DROP COLUMN を使って[テーブル1] の [カラム1] を削除するには、次のように書きます。
ALTER TABLE [テーブル1] DROP COLUMN [カラム1];
Student テーブルに先ほど追加した PhoneNumber カラムを削除してみましょう。
ALTER TABLE Student DROP COLUMN PhoneNumber;
[ 実行結果 ]
Student テーブルから PhoneNumber カラムが削除されましたね。
ALTER TABLE にも、ルールやオプションがいろいろありますが、テーブルの変更はプログラムからクエリーで行うことはそんなに多くないと思いますので、ここでは詳細は取り上げません。
次は、DROP TABLE でテーブルを削除してみましょう。