SQL Server 2008でテーブルをドロップせずに列を変更する方法
SQL Server 2008でテーブルをドロップせずに列を変更するには、いくつかの方法があります。
方法
- ALTER TABLE ステートメントを使用する
この方法は、列のデータ型、名前、NULL許容性などを変更するのに最もよく使用されます。
ALTER TABLE テーブル名
ALTER COLUMN 列名
[DATA TYPE 新しいデータ型]
[NULL | NOT NULL]
[DEFAULT 既定値]
例:
- 列のデータ型を
int
からvarchar(50)
に変更する
ALTER TABLE 顧客
ALTER COLUMN 名前
VARCHAR(50)
- 列をNULL許容に変更する
ALTER TABLE 顧客
ALTER COLUMN 電話番号
NULL
- ADD COLUMN ステートメントを使用する
テーブルに新しい列を追加するには、ADD COLUMN
ステートメントを使用します。
ALTER TABLE テーブル名
ADD 列名 データ型
テーブル 顧客
に メールアドレス
列を追加する
ALTER TABLE 顧客
ADD メールアドレス VARCHAR(100)
ALTER TABLE テーブル名
DROP COLUMN 列名
テーブル 顧客
から 電話番号
列を削除する
ALTER TABLE 顧客
DROP COLUMN 電話番号
注意事項
- 列を変更する前に、必ずテーブルをバックアップしてください。
- 列のデータ型を変更すると、既存のデータが失われる可能性があります。
- 列の名前を変更すると、その列を参照するクエリやビューを更新する必要があります。
上記の方法以外にも、GUI ツールを使用して列を変更することもできます。
補足
- SQL Server 2008 R2 では、
ALTER TABLE
ステートメントを使用して、列の順序を変更することもできます。
-- テーブル '顧客' の '名前' 列のデータ型を VARCHAR(50) に変更
ALTER TABLE 顧客
ALTER COLUMN 名前
VARCHAR(50);
-- テーブル '顧客' の '電話番号' 列を NULL 許容に変更
ALTER TABLE 顧客
ALTER COLUMN 電話番号
NULL;
-- テーブル '顧客' に 'メールアドレス' 列を追加
ALTER TABLE 顧客
ADD メールアドレス VARCHAR(100);
-- テーブル '顧客' から '電話番号' 列を削除
ALTER TABLE 顧客
DROP COLUMN 電話番号;
-- テーブル '顧客' に '誕生日' 列を追加 (デフォルト値は '1980-01-01')
ALTER TABLE 顧客
ADD 誕生日 DATE DEFAULT '1980-01-01';
-- テーブル '顧客' から '国籍' 列を削除
ALTER TABLE 顧客
DROP COLUMN 国籍;
CHANGE COLUMN ステートメントを使用した列の名前とデータ型の同時変更
-- テーブル '顧客' の '年齢' 列の名前を '年齢_数' に変更し、データ型を INT から SMALLINT に変更 (SQL Server 2012 以降)
ALTER TABLE 顧客
CHANGE COLUMN 年齢 年齢_数 SMALLINT;
- 上記のコードはサンプルです。実際の環境に合わせて変更してください。
SQL Server 2008でテーブルをドロップせずに列を変更する他の方法
SSMS は、SQL Server を管理するための GUI ツールです。 SSMS を使用して列を変更するには、以下の手順に従います。
- SSMS を起動し、データベースに接続します。
- オブジェクト エクスプローラーで、変更するテーブルを選択します。
- テーブルのデザイナーを開きます。
- 変更する列を選択します。
- プロパティ ウィンドウで、列のプロパティを変更します。
- 変更を保存します。
T-SQL スクリプトを使用して、列を変更することもできます。 T-SQL スクリプトは、ALTER TABLE ステートメントを使用して、列のデータ型、名前、NULL 許容性などを変更することができます。
データベース エンジン チューニング アドバイザーは、データベースのパフォーマンスを向上させるための提案を提供するツールです。 データベース エンジン チューニング アドバイザーは、列のデータ型を変更する提案を提供することもできます。
サードパーティ製のツールを使用する
列を変更するために使用できるサードパーティ製のツールも多数あります。 これらのツールは、GUI インターフェイスを提供し、列の変更を簡単にすることができます。
上記の方法以外にも、列を変更する方法はいくつかあります。 どの方法を使用するかは、要件と環境によって異なります。
sql-server sql-server-2008 column-types