PostgreSQL: データベース設計の自由度を向上させる!ALTER TABLEコマンドによる列追加
PostgreSQL に列を追加する方法
構文
ALTER TABLE table_name ADD COLUMN column_name data_type;
例
次の例では、users
テーブルに age
という名前の新しい列を追加します。この列は integer
型です。
ALTER TABLE users ADD COLUMN age integer;
オプション
ALTER TABLE
コマンドには、列を追加する際にいくつかのオプションを使用できます。
- DEFAULT オプション: 新しい列にデフォルト値を設定できます。
ALTER TABLE users ADD COLUMN age integer DEFAULT 18;
- NOT NULL オプション: 新しい列をNULL値を許容しない列に設定できます。
ALTER TABLE users ADD COLUMN age integer NOT NULL;
- CHECK オプション: 新しい列の値に制約を設定できます。
ALTER TABLE users ADD COLUMN age integer CHECK (age >= 18);
既存の列が存在する場合
ALTER TABLE
コマンドを実行する際に、すでに同じ名前の列が存在する場合、エラーが発生します。
このエラーを防ぐために、IF NOT EXISTS
オプションを使用できます。このオプションを指定すると、すでに同じ名前の列が存在する場合は、何も実行されません。
ALTER TABLE users ADD COLUMN IF NOT EXISTS age integer;
ALTER TABLE
コマンドを使用して、PostgreSQL の既存のテーブルに簡単に列を追加できます。
ADD COLUMN
オプションと、DEFAULT
、NOT NULL
、CHECK
などのオプションを使用して、新しい列を柔軟に設定できます。
シンプルな列追加
-- usersテーブルにage列を追加
ALTER TABLE users ADD COLUMN age integer;
デフォルト値の設定
-- usersテーブルにage列を追加し、デフォルト値を18に設定
ALTER TABLE users ADD COLUMN age integer DEFAULT 18;
NULL値の禁止
-- usersテーブルにage列を追加し、NULL値を禁止
ALTER TABLE users ADD COLUMN age integer NOT NULL;
値の制約
-- usersテーブルにage列を追加し、値が18以上であることを制約
ALTER TABLE users ADD COLUMN age integer CHECK (age >= 18);
既存の列が存在する場合
-- usersテーブルにage列を追加
-- すでにage列が存在する場合は、何も実行されない
ALTER TABLE users ADD COLUMN IF NOT EXISTS age integer;
複数列の追加
-- usersテーブルにage列とgender列を追加
ALTER TABLE users
ADD COLUMN age integer,
ADD COLUMN gender VARCHAR(255);
実行方法
例えば、psql コマンドを使用する場合は、以下の手順で実行できます。
- PostgreSQL サーバーに接続する
psql -d database_name -U username
- サンプルコードを実行する
\i sample_code.sql
注意事項
ALTER TABLE
コマンドは、テーブルの構造を変更する操作です。実行前に、必ずバックアップを取るようにしてください。DEFAULT
、NOT NULL
、CHECK
などのオプションは、データ型によって使用できるものが異なります。詳細は、PostgreSQL 公式ドキュメントを参照してください。
PostgreSQL に列を追加するその他の方法
SQL クライアントツール
多くの SQL クライアントツールは、GUI を使用してテーブルの構造を変更する機能を提供しています。
例えば、pgAdmin や DBeaver などのツールを使用すると、以下の手順で列を追加できます。
- ツールを使用して、データベースに接続する。
- テーブルを選択する。
- 構造編集画面を開く。
- 新しい列の名前とデータ型を入力する。
- 変更を保存する。
プログラミング言語
PostgreSQL に接続できるプログラミング言語を使用すれば、プログラムコードを使用して列を追加することもできます。
例えば、Python の psycopg2
ライブラリを使用する場合は、以下のコードで列を追加できます。
import psycopg2
# 接続情報の準備
connection_string = "dbname=database_name user=username password=password"
# コネクションの確立
with psycopg2.connect(connection_string) as connection:
cursor = connection.cursor()
# SQL クエリの発行
cursor.execute("""
ALTER TABLE users ADD COLUMN age integer;
""")
# コミット
connection.commit()
ALTER TABLE
コマンド以外にも、GUI ツールやプログラミング言語を使用して、PostgreSQL に列を追加することができます。
自分に合った方法を選択して、作業を進めてください。
postgresql postgresql-9.1