SQL ServerのALTERコマンドを徹底解説:構文・使い方・実例演習

SQL Serverを使ったデータベース管理では、テーブルやオブジェクトの定義を変更する必要が頻繁にあります。そのために使われる代表的なコマンドが ALTER です。

この記事では、ALTERの使い方を中心に、基本的な操作から応用までを解説します。

最後に学んだ内容を確認する演習問題も用意していますので、実践的にスキルを磨いていきましょう。


ALTERコマンドの概要

SQL Serverの ALTER コマンドは、データベース内の既存オブジェクト(テーブル、ビュー、ストアドプロシージャなど)の構造や定義を変更するために使用します。以下のような変更が可能です:

  • テーブルの列の追加・削除・変更
  • 制約(Primary Key, Foreign Keyなど)の追加・削除
  • データ型の変更
  • インデックスの変更
  • ビューやストアドプロシージャの修正

ALTERコマンドの基本構文

以下にALTERの代表的な用途ごとの構文を示します。

列の追加

ALTER TABLE テーブル名 
ADD 列名 データ型 [制約];

例:「employees」というテーブルに「email」列を追加する。

ALTER TABLE employees 
ADD email VARCHAR(100) NOT NULL;

列の変更(データ型の変更)

ALTER TABLE テーブル名 
ALTER COLUMN 列名 新しいデータ型;

例:「employees」テーブルの「salary」列のデータ型を INT から DECIMAL(10, 2) に変更。

ALTER TABLE employees 
ALTER COLUMN salary DECIMAL(10, 2);

列の削除

ALTER TABLE テーブル名 
DROP COLUMN 列名;

例:「employees」テーブルから「middle_name」列を削除する。

ALTER TABLE employees 
DROP COLUMN middle_name;

制約の追加と削除

Primary Keyの追加

ALTER TABLE テーブル名 
ADD CONSTRAINT 制約名 PRIMARY KEY (列名);

例:「employees」テーブルの「employee_id」列を主キーにする。

ALTER TABLE employees 
ADD CONSTRAINT pk_employee_id PRIMARY KEY (employee_id);

Foreign Keyの追加

ALTER TABLE テーブル名 
ADD CONSTRAINT 制約名 FOREIGN KEY (列名) REFERENCES 参照先テーブル (列名);

例:「employees」テーブルの「department_id」を、「departments」テーブルの「department_id」と関連付ける。

ALTER TABLE employees 
ADD CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments (department_id);

制約の削除

ALTER TABLE テーブル名 
DROP CONSTRAINT 制約名;

例:先ほど追加した外部キー制約「fk_department」を削除する。

ALTER TABLE employees 
DROP CONSTRAINT fk_department;

演習問題

ここまでの内容を理解できたか確認するために、いくつかの演習問題を用意しました。実際にSQL Serverで実行してみて、解答例と照らし合わせてください。

演習1: 新しい列の追加

students テーブルに birth_date 列(DATE 型)を追加してください。

演習2: 列のデータ型を変更

products テーブルの price 列のデータ型を INT から DECIMAL(10, 2) に変更してください。

演習3: 制約の追加

orders テーブルの order_id 列に Primary Key 制約を追加してください。

演習4: 制約の削除

orders テーブルから既存の Primary Key制約 を削除してください。


解答例

解答1: 新しい列の追加

ALTER TABLE students 
ADD birth_date DATE;

解答2: 列のデータ型を変更

ALTER TABLE products 
ALTER COLUMN price DECIMAL(10, 2);

解答3: 制約の追加

ALTER TABLE orders 
ADD CONSTRAINT pk_order_id PRIMARY KEY (order_id);

解答4: 制約の削除

ALTER TABLE orders 
DROP CONSTRAINT pk_order_id;

まとめ

SQL Serverにおける ALTER コマンドは、既存のテーブルやオブジェクトを柔軟に変更するために不可欠なツールです。

この記事で紹介したように、ALTERを使えば、列の追加・削除、制約の管理、データ型の変更が簡単に行えます。これらの知識を活用することで、効率的なデータベース運用が可能になります。

演習問題を通じてALTERの使い方を実践し、理解を深めましょう。ALTERコマンドを使いこなせるようになると、SQLのスキルがさらにレベルアップします。ぜひ、実務でも活用してください!