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のスキルがさらにレベルアップします。ぜひ、実務でも活用してください!