「Excelでの顧客管理に限界を感じているが、データベースの導入はハードルが高そう」――PostgreSQLなら、無料で使えて高い信頼性を誇るデータベースをすぐに始められます。
本記事では、PostgreSQLのインストール方法から基本操作、SQL文の書き方まで、初心者でも安心して取り組める入門ガイドをお届けします。
PostgreSQLとは?初心者が知るべき基礎知識
PostgreSQL(ポストグレスキューエル)は、世界中で使われている信頼性の高いオープンソースのリレーショナルデータベースです。リレーショナルデータベースとは、データを表(テーブル)の形で管理し、複数の表を関連付けて使える仕組みのこと。Excelの表をイメージするとわかりやすいでしょう。
PostgreSQLが選ばれる3つの理由:
- 無料で本格的:オープンソースで無料ながら、大企業のシステムでも採用される高い性能と信頼性
- 標準SQLに準拠:業界標準のSQL言語を使うため、他のデータベースの知識も活かせる
- 拡張性が高い:小規模システムから大規模システムまで、ビジネスの成長に合わせて拡張可能
この記事では、PostgreSQLの基礎知識から実際の使い方まで、初心者の方でも理解できるように解説します。
PostgreSQLでできること
PostgreSQLを使うと、以下のような業務を効率化できます。
- 顧客情報、商品情報、取引履歴などの一元管理
- 複雑な条件での高速検索(「東京都在住で過去3ヶ月以内に購入した顧客」など)
- データの集計・分析(月別売上、商品別在庫など)
- Webアプリケーションのバックエンドとして活用
主な特徴:
- ACID特性への完全準拠:データの正確性と整合性を保証
- 豊富なデータ型:文字列、数値、日付はもちろん、JSON、配列、地理情報など多様な形式に対応
- 同時アクセスに強い:複数ユーザーが同時にデータ操作しても安全に処理
他のデータベースとの違い
PostgreSQL vs MySQL:
MySQLはシンプルなWebサービスや読み取り中心の用途に適していますが、PostgreSQLは複雑な検索・集計処理やデータの正確性が重要な業務システムに強みがあります。SQLとNoSQLの選び方についてはNoSQLとSQLの違いと選び方も参考になります。標準SQLへの準拠度が高く、サブクエリやウィンドウ関数などの高度な機能も充実しています。
PostgreSQL vs SQLite:
SQLiteは軽量でスマートフォンアプリなどに組み込まれますが、単一ユーザー向けです。PostgreSQLはサーバー型で、複数ユーザーが同時アクセスする業務システムに最適です。
選択のポイント:
- PostgreSQL:業務システム、複雑な処理、データの正確性重視
- MySQL:シンプルなWebサービス、高速な読み取り中心
- SQLite:単一ユーザー、組み込み用途、小規模データ
中小企業に最適な理由
多くの中小企業が顧客管理や在庫管理をExcelで行っていますが、複数人での同時編集の困難さ、データの重複や入力ミス、動作の重さなどの課題があります。
PostgreSQLへの移行により、これらの課題を解決できます:
コスト面:
- ライセンス費用ゼロ(何台でも、何人でも追加費用なし)
- 初期投資を抑え、浮いた予算をシステム開発や運用サポートに活用可能
技術面:
- 30年以上の開発実績と世界中での採用実績による長期的な安定性
- 豊富な情報とコミュニティサポート
- 標準SQLのため、基礎知識がある人材なら習得しやすい
ビジネス面:
- 特定企業に依存しないベンダーロックインの回避
- 必要に応じたカスタマイズの自由度
- まず試してから本格導入を判断できる導入障壁の低さ
ただし、すべて自力で対応する必要はありません。専門家の伴走支援サービスを活用すれば、導入から運用まで安心して進められます。
PostgreSQLのインストール【Windows・Mac対応】
PostgreSQLを使い始めるには、まずパソコンにインストールします。Windows・Macそれぞれの手順を解説します。
Windows環境でのインストール
手順1:インストーラーのダウンロード
- PostgreSQL公式サイト(https://www.postgresql.org/download/windows/)にアクセス
- 「Download the installer」をクリック
- 最新バージョン(推奨:PostgreSQL 15以降)のWindowsインストーラーをダウンロード
- ダウンロードした.exeファイルを実行
手順2:インストールウィザードの設定
- コンポーネントの選択:PostgreSQL Server、pgAdmin 4、Command Line Toolsをすべて選択
- スーパーユーザーパスワードの設定:管理者用パスワードを設定(必ずメモを残す)
- ポート番号:デフォルトの5432のまま
- ロケール:「Japanese, Japan」または「Default locale」を選択
- インストール実行
よくあるトラブルと対処法:
- ポート5432使用中エラー:別のポート番号(5433など)を指定
- インストールが途中で停止:ウイルス対策ソフトを一時的に無効化
Mac環境でのインストール
公式インストーラーを使う方法:
- PostgreSQL公式サイト(https://www.postgresql.org/download/macosx/)にアクセス
- Mac用の最新バージョンをダウンロード
- .dmgファイルを開き、インストーラーを実行
- セキュリティ警告が出た場合は「開く」を選択
- 管理者パスワード(Macのログインパスワード)を入力
- PostgreSQLのスーパーユーザーパスワードを設定
Homebrewを使う方法(中級者向け):
# PostgreSQLのインストール
brew install postgresql@15
# PostgreSQLの起動
brew services start postgresql@15
インストール確認
コマンドラインでの確認:
# バージョン確認
psql --version
# 表示例:psql (PostgreSQL) 15.2
# データベースへの接続テスト
psql -U postgres
# パスワード入力後、postgres=# と表示されれば成功
pgAdmin 4での確認:
- pgAdmin 4を起動
- 「Servers」>「PostgreSQL 15」を展開
- パスワードを入力
- 「Databases」フォルダが表示されれば成功
接続できない場合:
- PostgreSQLサービスが起動しているか確認
- ファイアウォールでポート5432がブロックされていないか確認
psqlコマンドの基本的な使い方
psql(ピーエスキューエル)は、PostgreSQLに付属するコマンドラインツールです。GUIツールよりも素早く効率的に作業できます。
psqlの起動とログイン
基本的な接続方法:
# 基本構文
psql -U ユーザー名 -d データベース名
# 例:postgresデータベースに接続
psql -U postgres -d postgres
# パスワードを求められたら入力
主な接続オプション:
| オプション | 意味 | 例 |
|---|---|---|
| -U | ユーザー名 | -U postgres |
| -d | データベース名 | -d mydb |
| -h | ホスト名 | -h localhost |
| -p | ポート番号 | -p 5432 |
接続成功時は postgres=# というプロンプトが表示されます。
実務でよく使うコマンド
データベース操作:
-- データベース一覧
\l
-- データベースに接続(切り替え)
\c データベース名
-- 現在のデータベースを確認
SELECT current_database();
テーブル操作:
-- テーブル一覧
\dt
-- テーブル構造の確認
\d テーブル名
-- ユーザー一覧
\du
実行関連:
-- 外部SQLファイルの実行
\i /path/to/script.sql
-- クエリ結果をファイルに出力
\o output.txt
-- 実行時間の表示
\timing
-- psqlを終了
\q
ヘルプとエラー対処
ヘルプコマンド:
-- psqlコマンド一覧
\?
-- SQL構文のヘルプ
\h
-- 特定のSQLコマンドのヘルプ
\h SELECT
よくあるエラーと対処法:
| エラー | 原因 | 対処法 |
|---|---|---|
| syntax error | SQL構文エラー | \hでヘルプ参照 |
| relation does not exist | テーブルが存在しない | \dtでテーブル確認 |
| permission denied | 権限不足 | 適切な権限を持つユーザーで接続 |
データベースとテーブルの作成
実務を想定した顧客管理システムを例に、データベースとテーブルの作成方法を解説します。
データベースの作成
-- 顧客管理用データベースを作成
CREATE DATABASE customer_management
ENCODING 'UTF8'
LC_COLLATE = 'ja_JP.UTF-8'
LC_CTYPE = 'ja_JP.UTF-8';
-- 作成確認
\l
-- 作成したデータベースに接続
\c customer_management
テーブルの設計と作成
顧客テーブルの作成例:
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- テーブル構造の確認
\d customers
主なデータ型:
| データ型 | 用途 | 例 |
|---|---|---|
| SERIAL | 自動連番(ID) | 1, 2, 3... |
| VARCHAR(n) | 可変長文字列 | 名前、メール |
| INTEGER | 整数 | 年齢、数量 |
| DECIMAL(m,n) | 小数 | 金額、評価 |
| DATE | 日付 | 2024-01-01 |
| TIMESTAMP | 日時 | 2024-01-01 10:30:00 |
| BOOLEAN | 真偽値 | true/false |
制約の設定:
- PRIMARY KEY:主キー(一意で必須)
- NOT NULL:必須項目
- UNIQUE:重複不可
- DEFAULT:デフォルト値
リレーションの設定
注文テーブルの作成(外部キーの例):
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL,
order_date DATE DEFAULT CURRENT_DATE,
total_amount DECIMAL(10, 2),
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
外部キーにより、存在しない顧客への注文登録を防ぎ、データの整合性を保ちます。
SQLの基本操作を実践
実際にデータを操作する4つの基本SQL(INSERT、SELECT、UPDATE、DELETE)を解説します。
データの登録(INSERT)
-- 1件登録
INSERT INTO customers (name, email, phone)
VALUES ('山田太郎', 'yamada@example.com', '090-1234-5678');
-- 複数件一括登録
INSERT INTO customers (name, email, phone) VALUES
('佐藤花子', 'sato@example.com', '090-2345-6789'),
('鈴木一郎', 'suzuki@example.com', '090-3456-7890');
データの検索(SELECT)
-- 全件取得
SELECT * FROM customers;
-- 特定の列だけ取得
SELECT name, email FROM customers;
-- 条件付き検索
SELECT * FROM customers
WHERE name LIKE '%山田%';
-- 並び替え
SELECT * FROM customers
ORDER BY created_at DESC;
-- 件数制限
SELECT * FROM customers
LIMIT 10;
データの更新(UPDATE)
-- 特定レコードの更新
UPDATE customers
SET phone = '090-9999-8888'
WHERE email = 'yamada@example.com';
-- 複数列の更新
UPDATE customers
SET name = '山田次郎', phone = '090-1111-2222'
WHERE id = 1;
注意:WHERE句を忘れると全レコードが更新されます。
データの削除(DELETE)
-- 特定レコードの削除
DELETE FROM customers
WHERE id = 1;
-- 条件付き削除
DELETE FROM customers
WHERE created_at < '2023-01-01';
注意:DELETE文も取り消せません。WHERE句を必ず確認しましょう。
ユーザー管理と権限設定
PostgreSQLのセキュリティを保つため、適切なユーザー管理と権限設定が重要です。
ユーザーとロールの概念
PostgreSQLでは「ロール」という概念でユーザーを管理します。ロールには以下の種類があります:
- ログインロール:データベースに接続できるユーザー
- グループロール:複数のユーザーをまとめて管理
ユーザーの作成
-- 基本的なユーザー作成
CREATE USER app_user WITH PASSWORD 'secure_password';
-- 権限付きユーザー作成
CREATE USER admin_user WITH PASSWORD 'admin_pass'
CREATEDB
CREATEROLE;
-- ユーザー一覧確認
\du
権限の設定
-- データベースへの接続権限
GRANT CONNECT ON DATABASE customer_management TO app_user;
-- テーブルへの操作権限
GRANT SELECT, INSERT, UPDATE ON customers TO app_user;
-- すべての権限を付与
GRANT ALL PRIVILEGES ON DATABASE customer_management TO admin_user;
-- 権限の剥奪
REVOKE DELETE ON customers FROM app_user;
セキュリティのベストプラクティス
最低限実施すべきこと:
- postgresユーザーを直接使わない:アプリケーション用に専用ユーザーを作成
- 強力なパスワード設定:8文字以上、英数字記号の組み合わせ
- 最小権限の原則:必要な権限だけを付与
- 定期的なパスワード変更:重要なシステムでは3〜6ヶ月ごと
-- パスワード変更
ALTER USER app_user WITH PASSWORD 'new_secure_password';
PostgreSQLを業務で活用するために
Excel管理からの移行ステップ
ステップ1:現状の整理
- 現在Excelで管理している項目を洗い出す
- データ間の関連性を確認
ステップ2:データベース設計
- 必要なテーブルと列を設計
- データ型と制約を決定
ステップ3:データ移行
- ExcelデータをCSV形式で保存
- COPYコマンドでインポート
COPY customers(name, email, phone)
FROM '/path/to/customers.csv'
WITH (FORMAT csv, HEADER true, ENCODING 'UTF8');
バックアップとリストア
バックアップの作成:
# データベース全体のバックアップ
pg_dump -U postgres customer_management > backup.sql
# 圧縮バックアップ
pg_dump -U postgres -Fc customer_management > backup.dump
リストア(復元):
# SQLファイルからの復元
psql -U postgres customer_management < backup.sql
# 圧縮ファイルからの復元
pg_restore -U postgres -d customer_management backup.dump
定期バックアップの推奨:
- 日次バックアップの自動化(バックアップ3-2-1ルールを参考に)
- 複数世代の保持(最低7日分)
- 別サーバーへの保存
pgAdminを使った視覚的な管理
pgAdmin 4を使えば、GUIで直感的にデータベースを管理できます。
主な機能:
- テーブルデータの閲覧・編集
- SQLクエリの実行と結果表示
- データベース構造の視覚的な確認
- バックアップ・リストアの実行
初心者は、まずpgAdminで操作に慣れてから、徐々にpsqlコマンドも使えるようになるのが効率的です。
学習リソースとコミュニティ
公式ドキュメント:
- PostgreSQL日本語マニュアル(https://www.postgresql.jp/document/)
コミュニティ:
- 日本PostgreSQLユーザ会(https://www.postgresql.jp/)
- Stack Overflow(英語・日本語)
困ったときは:
- エラーメッセージで検索
- 公式フォーラムで質問
- 専門家の伴走支援サービスの活用
PostgreSQLは、適切に使えば中小企業の業務効率を大きく改善できる強力なツールです。データベース操作をさらに効率化したい場合は、Prisma ORMの活用もおすすめです。この記事で学んだ基礎知識を活かして、まずは小さなシステムから始めてみましょう。