今回は、RDBMS上に作成したテーブルに対して、列を追加・削除するSQL文について説明します。
RDBMSを運営していく中では、一度、テーブルを作成したあとでも、必要な情報が増え列の追加が必要になったり、逆に不要な情報として列を削除するといったことが発生することもあります。
この記事で紹介するSQL文[ALTER TABLE]を使えば、既存のテーブルに対して列の追加や削除を実行することができます。
この章では、ALTER TABLE ADDを使って、RDBMS上のテーブルに列を追加する方法を説明します。なお、見本は便宜上、Excel形式の表を使います。
RDBMS上に作成したテーブルに列を追加するときには、[ALTER TABLE ADD]というSQL文を実行します。
–テーブルに1列を追加する
ALTER TABLE テーブル名 ADD COLUMN 列名 データ型;
–テーブルに2列を追加する
ALTER TABLE テーブル名 ADD COLUMN 列名1 データ型,
ADD COLUMN 列名2 データ型;
基本文法の場合、追加する列は既存テーブルの最終列になります。
ALTER TABLEを使って列を追加する際、最後尾ではなく任意の箇所に列を追加する方法です。
ただし、PostgreSQLでは任意の箇所に列を追加することはできません。
–テーブルの最初に追加する
ALTER TABLE テーブル名 ADD COLUMN 列名 データ型 FIRST;
–指定列の次に追加する
ALTER TABLE テーブル名 ADD COLUMN 列名 データ型 AFTER 指定列名;
たとえば、RDBMS上に作成されているテーブル「Worker」に、「boss」という列を追加するときには下記のようにSQL文を記述します。
SQL[ALTER TABLE ADD文]
ALTER TABLE Worker ADD COLUMN boss VARCHAR(30);
ALTER TABLEで列を追加する際、追加する列にNOT NULL制約を定義したい場合には注意が必要です。
SQLの文法上では、下記のようにNOT NULL制約を付加することも可能ですが、既存のテーブルにすでにデータが登録されている場合、追加した列のレコードが空白となってしまい、エラーが発生します。
ALTER TABLE Worker ADD COLUMN boss VARCHAR(30) NOT NULL;
そのため、手順としては
という順番でNOT NULL制約を定義する必要があるのです。
ALTER TABLEは、既存の列の定義を変更することも可能です。たとえばデータ型を変更したり、NOT NULL制約を定義したりといったことが可能です。そのような使い方については、別記事で紹介します。
この章では、ALTER TABLE DROPを使って、RDBMS上のテーブルの列を削除する方法を説明します。なお、見本は便宜上、Excel形式の表を使います。
RDBMS上に作成したテーブルの列を削除するときには、[ALTER TABLE DROP]というSQL文を実行します。
–テーブルの1列を削除する
ALTER TABLE テーブル名 DROP COLUMN 列名;
–テーブルの2列を削除する
ALTER TABLE テーブル名 DROP COLUMN 列名1,
DROP COLUMN 列名2;
たとえば、RDBMS上に作成されているテーブル「Worker」の、「boss」という列を削除するときには下記のようにSQL文を記述します。
SQL[ALTER TABLE DROP文]
ALTER TABLE Worker DROP COLUMN boss;
実際のRDBMS、MySQLでALTER TABLE文を実行してテーブルに列を追加・削除した実画像を紹介します。
実際のRDBMS、PostgreSQLでALTER TABLE文を実行してテーブルに列を追加・削除した実画像を紹介します。
今回は、ALTER TABLE文で既存のテーブルに列を追加したり、列を削除する方法について記事にしました。
ALTER TABLEでは、今回のように列の追加と削除のほか、定義を変更したり、テーブル・列名のリネームをすることも可能です。それらの使い方については、別記事で紹介します。