2025年12月26日金曜日

SQL Server ALTER TABLE文の使い方|列追加・変更・制約操作の実践

既存テーブルを変更したいときは?SQL Server ALTER TABLE文の基本と実践操作を解説

テーブルを作成した後に「列を追加したい」「データ型を変更したい」「制約を追加したい」といったケースはよくあります。
そんなときに使うのが ALTER TABLE文 です。
この記事では、列の追加・変更・削除から、PRIMARY KEYやFOREIGN KEYなどの制約操作まで、実務で使えるALTER TABLEの基本を初心者向けにわかりやすく解説します。

目次

ALTER TABLE文とは?

基本構文

ALTER TABLE文は、既存のテーブル構造を変更するためのSQLコマンドです。
CREATE TABLEで作成したテーブルに対して、列や制約を後から追加・変更・削除できます。


ALTER TABLE テーブル名
{ ADD | ALTER | DROP } 操作内容;

操作対象によって構文が異なるため、代表的なパターンを次の章で紹介します。

列を追加する(ADD COLUMN)

1列を追加する

既存テーブルに新しい列を追加する場合は ADD を使います。


ALTER TABLE Customers
ADD Phone NVARCHAR(20);

この例では、Customersテーブルに Phone 列が追加されます。

複数列を一度に追加する


ALTER TABLE Customers
ADD ZipCode NVARCHAR(10),
    IsActive BIT DEFAULT 1;

複数列を追加する場合はカンマで区切って指定できます。

列を変更する(ALTER COLUMN)

データ型を変更する

既存列のデータ型やサイズを変更する場合は ALTER COLUMN を使います。


ALTER TABLE Customers
ALTER COLUMN Name NVARCHAR(100);

ただし、変更前のデータと新しい型の互換性がない場合はエラーになります。
特にNULL/NOT NULLの変更や桁数縮小には注意が必要です。

NULL制約を変更する


ALTER TABLE Customers
ALTER COLUMN Email NVARCHAR(100) NOT NULL;

NULLを禁止する場合、すでにNULLデータがあると変更できません。事前にデータを修正しておきましょう。

列を削除する(DROP COLUMN)

不要な列を削除する

列を削除するには DROP COLUMN を使います。


ALTER TABLE Customers
DROP COLUMN Phone;

削除した列のデータは元に戻せないため、バックアップを取ってから実行するのが安全です。

複数列を削除する


ALTER TABLE Customers
DROP COLUMN ZipCode, IsActive;

カンマ区切りで複数列をまとめて削除することもできます。

制約を追加・削除する

制約を追加する(ADD CONSTRAINT)

PRIMARY KEYやFOREIGN KEYなどの制約を後から追加する場合:


ALTER TABLE Orders
ADD CONSTRAINT FK_Orders_Customers
FOREIGN KEY (CustomerID)
REFERENCES Customers(CustomerID);

制約名を明示しておくと、後から削除や確認がしやすくなります。

制約を削除する(DROP CONSTRAINT)

不要な制約を削除するには DROP CONSTRAINT を使います。


ALTER TABLE Orders
DROP CONSTRAINT FK_Orders_Customers;

制約名はシステムビューで確認できます。


SELECT name, type_desc
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT%';

実務で注意すべきポイント

  • 本番環境でのALTER TABLEは慎重に:ロックが発生し、一時的にアクセスが止まる場合があります。
  • 桁数の縮小やNULL制約の追加はリスク:既存データが条件を満たさないとエラーになります。
  • 制約や外部キーの削除は依存関係を確認:他テーブルの整合性に影響する可能性があります。
  • 大規模変更は一時テーブルを活用:一度新しい構造で作成してデータ移行する方が安全です。

まとめと次のステップ

学んだ内容の整理

  • ALTER TABLEは既存テーブルの構造変更に使用。
  • ADDで列・制約を追加、ALTERで列変更、DROPで削除。
  • データ型や制約変更には互換性と依存関係の確認が必須。
  • 安全のためバックアップと検証を行ってから実行する。

参考リンク

SQL Server 解説用イメージ

0 件のコメント:

コメントを投稿