【SQLServer】既存のテーブルにカラムを追加・変更・削除(ALTER TABLE)

-
カテゴリ:
- DB
-
タグ:
- #SQLServer
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;
※1.注意点
新規でカラムを追加するとき「NOT NULL」のみの設定はできず、NULLを許可するか、またはNOT NULLとデフォルト値の両方を設定することしかできません。
解決策としては、例えば文字列型のカラムの場合一旦「NOT NULL DEFAULT ''」をカラムを追加しておき、その後「NOT NULL」に変更する方法がベターです。
-- 一旦デフォルト値を設定してカラム追加
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;
以上です。
投稿日:2020-08-21
更新日:2020-08-21