SQLServerで既存のテーブルに対してカラムを追加、変更、削除する方法をここにメモしておきます。
・カラムの追加
-- 構文
ALTER TABLE [テーブル名] ADD [カラム名] [データ型] [NULL or NOT NULL DEFAULT ××];
-- 例
ALTER TABLE user ADD NAME_KANA nvarchar(60) NOT NULL DEFAULT '';
上記のSQLによって、テーブルの一番右側にカラムが追加されます。
残念ながらALTER TABLE文ではカラム位置を指定して追加することができないようです。
注意点として、新規でカラムを追加する場合「NOT NULL」のみの設定ができません。解決法としては記事下の※1を参照ください。
・カラムの変更
-- 構文
ALTER TABLE [テーブル名] ALTER COLUMN [新しいカラム名] [新しいデータ型];
-- 例)カラム名変更
ALTER TABLE user ALTER COLUMN KANA;
-- 例)データ型変更
ALTER TABLE user ALTER COLUMN NAME_KANA nvarchar(100);
・カラムの削除
-- 構文
ALTER TABLE [テーブル名] DROP COLUMN [カラム名];
-- 例
ALTER TABLE user DROP COLUMN NAME_KANA;
注意ポイント
新規でカラムを追加するとき「NOT NULL」のみの設定はできず、NULLを許可するか、またはNOT NULLとデフォルト値の両方を設定することしかできません。
解決策としては、例えば文字列型のカラムの場合一旦「NOT NULL DEFAULT ''」をカラムを追加しておき、その後「NOT NULL」に変更する方法がベターです。
SQL -- 一旦デフォルト値を設定してカラム追加 > ALTER TABLE user ADD NAME_KANA nvarchar(6) NOT NULL DEFAULT ''; -- 全レコードのNAME_KANAを「hoge」に更新 -- ※ここはシステムの仕様によって適宜、適当な値を入れてください。 > UPDATE user SET NAME_KANA ='hoge'; -- NOT NULLに変更 ALTER TABLE user ALTER COLUMN NAME_KANA nvarchar(6) NOT NULL;
以上です。