【PostgreSQL入門】使い方を基礎から実践まで丁寧に解説|初心者向け完全ガイド

kento_morota 16分で読めます

「Excelでの顧客管理に限界を感じているが、データベースの導入はハードルが高そう」――PostgreSQLなら、無料で使えて高い信頼性を誇るデータベースをすぐに始められます。

本記事では、PostgreSQLのインストール方法から基本操作、SQL文の書き方まで、初心者でも安心して取り組める入門ガイドをお届けします。

PostgreSQLとは?初心者が知るべき基礎知識

PostgreSQL(ポストグレスキューエル)は、世界中で使われている信頼性の高いオープンソースのリレーショナルデータベースです。リレーショナルデータベースとは、データを表(テーブル)の形で管理し、複数の表を関連付けて使える仕組みのこと。Excelの表をイメージするとわかりやすいでしょう。

PostgreSQLが選ばれる3つの理由:

  1. 無料で本格的:オープンソースで無料ながら、大企業のシステムでも採用される高い性能と信頼性
  2. 標準SQLに準拠:業界標準のSQL言語を使うため、他のデータベースの知識も活かせる
  3. 拡張性が高い:小規模システムから大規模システムまで、ビジネスの成長に合わせて拡張可能

この記事では、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:インストーラーのダウンロード

  1. PostgreSQL公式サイト(https://www.postgresql.org/download/windows/)にアクセス
  2. 「Download the installer」をクリック
  3. 最新バージョン(推奨:PostgreSQL 15以降)のWindowsインストーラーをダウンロード
  4. ダウンロードした.exeファイルを実行

手順2:インストールウィザードの設定

  1. コンポーネントの選択:PostgreSQL Server、pgAdmin 4、Command Line Toolsをすべて選択
  2. スーパーユーザーパスワードの設定:管理者用パスワードを設定(必ずメモを残す
  3. ポート番号:デフォルトの5432のまま
  4. ロケール:「Japanese, Japan」または「Default locale」を選択
  5. インストール実行

よくあるトラブルと対処法:

  • ポート5432使用中エラー:別のポート番号(5433など)を指定
  • インストールが途中で停止:ウイルス対策ソフトを一時的に無効化

Mac環境でのインストール

公式インストーラーを使う方法:

  1. PostgreSQL公式サイト(https://www.postgresql.org/download/macosx/)にアクセス
  2. Mac用の最新バージョンをダウンロード
  3. .dmgファイルを開き、インストーラーを実行
  4. セキュリティ警告が出た場合は「開く」を選択
  5. 管理者パスワード(Macのログインパスワード)を入力
  6. 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での確認:

  1. pgAdmin 4を起動
  2. 「Servers」>「PostgreSQL 15」を展開
  3. パスワードを入力
  4. 「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;

セキュリティのベストプラクティス

最低限実施すべきこと:

  1. postgresユーザーを直接使わない:アプリケーション用に専用ユーザーを作成
  2. 強力なパスワード設定:8文字以上、英数字記号の組み合わせ
  3. 最小権限の原則:必要な権限だけを付与
  4. 定期的なパスワード変更:重要なシステムでは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の活用もおすすめです。この記事で学んだ基礎知識を活かして、まずは小さなシステムから始めてみましょう。

#PostgreSQL#入門#使い方
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう