※ この記事にはアフィリエイトリンクが含まれます
Postgresでテーブル列を追加することになったときに、どう追加したら良いか忘れてしまうことが結構あるので、備忘録のために記載いたします。
テーブルに列を追加する
テーブルに列を追加します。
ALTER TABLE [テーブル名] ADD COLUMN [追加する列名] [データ型][オプション]
例えば、usersというテーブルにageという整数型の列を追加したいという場合は以下のように書きます。
ALTER TABLE users ADD COLUMN age INTEGER;
列を追加する際に設定できるオプション
下記のようなものがあります。
- DEFAULT値の設定
- NOT NULL制約
- ユニーク制約
DEFAULT値の設定
追加する列にデフォルトの値を設定できます。
ALTER TABLE users ADD COLUMN age INTEGER DEFAULT 0;
NOT NULL制約
その列にNULLを許可しない場合、NOT NULLと入れることでNULLを許容できなくすることができます。
ALTER TABLE users ADD COLUMN age INTEGER NOT NULL;
ユニーク制約
その列の値が一位である必要がある場合、UNIQUE制約を追加します。
ALTER TABLE users ADD COLUMN email TEXT UNIQUE;
上記のように、一度作ったテーブルに列を追加することができます。
データ列を追加した際に、データをまとめてINSERTしたい!という方向けにこちらの記事も投稿しています。こちらもよろしければご覧ください。
テーブルの列を削除する
一度作ったテーブルの列を削除します。
ALTER TABLE [テーブル名] DROP COLUMN [列名] [オプション]
例えば、usersというテーブルからageという列を削除したい場合、以下のようにして実行します。
ALTER TABLE users DROP COLUMN age;
列を削除する際に設定できるオプション
下記のようなものがあります。ただ、削除という処理は慎重に行う必要があるため、下記の処理はあまり使いません。参考までに、紹介します。
- CASCADE
- IF EXISTS
CASCADE
ほかの制約や依存関係がある場合、それらも一緒に削除したい場合はCASCADEオプションを利用します。
ALTER TABLE users DROP COLUMN age CASCADE;
IF EXISTS
指定した列が存在しない場合でもエラーを出さないようにしたい場合は、IF EXISTSを使用します。
ALTER TABLE users DROP COLUMN age IF EXISTS;
列の削除は重い処理であるため、実行するときは慎重に実行してください。
テーブル列のデータ型を変換する
テーブル列のデータ型を変換します。
ALTER TABLE [テーブル名] ALTER COLUMN [列名] TYPE [変換するデータ型] USING [式]
例によってusersテーブルのage列をINTEGER からTEXTに変更したい場合、以下のように実行します。
ALTER TABLE users ALTER COLUMN age TYPE TEXT;
場合によって、データ型の制約によって型変換がうまくいかない場合があります。
その際は、USING句を使って明示的に型変換をします。
ALTER TABLE users ALTER COLUMN age TYPE INTEGER USING age::INTEGER;
データ型を変換することによって、データが損失する可能性があるので、その点はご注意ください。
念のため事前にバックアップを取っておくのをお勧めします。
最後に
本記事では、Postgresを使ってテーブル列の追加、削除、データ型の変換方法をご紹介しました。
個人的に、データ型変換する際に使用するUSING句が曖昧だったりしたので、調べていて勉強になりました。
PostgreSQLを効率よく学びたい方はUdemyがおすすめ
もっとわかりやすくPostgreSQLを学びたいという方には、Udemyがおすすめです。Udemyは、オンライン学習を手軽に始められる便利なプラットフォームで、初心者から上級者向けまで、様々なレベルのSQLコースがそろっています。ですので自身のスキルや目的にあったコースを選ぶことができます。
また、Udemyはコミュニティのサポートもしており、質問や情報交換も行えるため、学習を進めている中で浮かんだ疑問などを解消する手助けを受けることもできます。
Udemyは定期的に90%OFFなどの規模でセールを開催しているので、そのタイミングを狙うのもありでしょう。今までにセールが開催された時期をまとめました。
- 季節ごとのセール
年末年始や夏季、春季などの特別な時期に大規模なセールを実施 - 祝日セール
バレンタインデー、感謝祭、クリスマスなどの祝日にもセールを実施
コメント