PostgreSQLテーブル入門
テーブルの作成と基本操作
PostgreSQLでのテーブル作成、データ型、制約、テーブルの変更方法を解説します。
こんな人向けの記事です
- PostgreSQLでテーブルを作成したい人
- データ型や制約の種類を知りたい人
- 既存テーブルの構造変更方法を学びたい人
Step 1テーブルの作成
SQL
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE
);
Step 2主要なデータ型
| データ型 | 説明 | 例 |
|---|---|---|
| INTEGER / BIGINT | 整数型 | 1, 100, -50 |
| SERIAL / BIGSERIAL | 自動増分整数 | 自動採番 |
| NUMERIC(p,s) | 精度指定の数値 | 99999.99 |
| VARCHAR(n) / TEXT | 可変長文字列 | 文字列データ |
| BOOLEAN | 真偽値 | TRUE / FALSE |
| DATE / TIMESTAMP | 日付・日時 | 2024-01-01 |
| JSON / JSONB | JSON形式データ | {"key": "value"} |
| UUID | 汎用一意識別子 | 550e8400-e29b-... |
Step 3制約の種類
| 制約 | 説明 |
|---|---|
| PRIMARY KEY | 主キー(一意 + NOT NULL) |
| FOREIGN KEY | 他テーブルの主キーを参照 |
| UNIQUE | 一意性の保証 |
| NOT NULL | NULL値を禁止 |
| CHECK | 条件チェック |
| DEFAULT | デフォルト値 |
SQL
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price NUMERIC(10, 2) NOT NULL CHECK (price >= 0),
stock INTEGER NOT NULL DEFAULT 0,
category_id INTEGER REFERENCES categories(category_id)
);
Step 4テーブルの変更(ALTER TABLE)
SQL
-- カラムの追加
ALTER TABLE users ADD COLUMN last_login TIMESTAMP;
-- カラムの削除
ALTER TABLE users DROP COLUMN last_login;
-- カラムの型変更
ALTER TABLE users ALTER COLUMN username TYPE VARCHAR(100);
-- カラム名の変更
ALTER TABLE users RENAME COLUMN username TO user_name;
-- NOT NULL制約の追加
ALTER TABLE users ALTER COLUMN email SET NOT NULL;
-- テーブル名の変更
ALTER TABLE users RENAME TO app_users;
Step 5テーブルの削除
SQL
-- テーブルの削除
DROP TABLE users;
-- 存在する場合のみ削除
DROP TABLE IF EXISTS users;
-- 依存オブジェクトも含めて削除
DROP TABLE users CASCADE;
注意: DROP TABLEはテーブルとデータを完全に削除します。元に戻せないので十分注意してください。