【入門】PostgreSQLをインストールして簡単なデータベースを作ってみよう

【入門】PostgreSQLをインストールして簡単なデータベースを作ってみよう

PostgreSQLのインストール方法から、基本的なデータベースの作成、テーブルの操作まで、初心者にもわかりやすく解説します。


【入門】PostgreSQLをインストールして簡単なデータベースを作ってみよう

PostgreSQLは、信頼性が高く、機能が豊富なオープンソースのリレーショナルデータベースです。この記事では、PostgreSQLのインストール方法から基本的なデータベースの作成、テーブルの操作まで、初心者にもわかりやすく解説します。

PostgreSQLとは?

PostgreSQLは以下のような特徴を持つデータベース管理システム(DBMS)です:

  1. オープンソース

    • 無料で使用可能
    • 活発なコミュニティ
    • 豊富なドキュメント
  2. 高い信頼性

    • ACID準拠
    • トランザクション管理
    • 障害復旧機能
  3. 豊富な機能

    • JSON対応
    • 地理情報システム(PostGIS)
    • フルテキスト検索

インストール方法

Windowsの場合

  1. インストーラーのダウンロード

  2. インストールの実行

    # インストーラーを実行し、以下の手順で進める
    1. インストール先を選択
    2. 必要なコンポーネントを選択
    3. データディレクトリを設定
    4. パスワードを設定
  3. 環境変数の設定

    • システム環境変数のPATHに以下を追加:
      C:\Program Files\PostgreSQL\15\bin

Macの場合

  1. Homebrewを使用したインストール

    # Homebrewのインストール(未インストールの場合)
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
    # PostgreSQLのインストール
    brew install postgresql@15
  2. サービスの起動

    # PostgreSQLサービスの起動
    brew services start postgresql@15

Linuxの場合(Ubuntu)

  1. パッケージのインストール

    # パッケージリストの更新
    sudo apt update
    
    # PostgreSQLのインストール
    sudo apt install postgresql postgresql-contrib
  2. サービスの確認

    # サービスの状態確認
    sudo systemctl status postgresql

初期設定

1. データベースへの接続

# PostgreSQLに接続
psql -U postgres

# パスワード認証が求められる場合は設定したパスワードを入力

2. 基本的なコマンド

-- データベース一覧の表示
\l

-- ユーザー一覧の表示
\du

-- テーブル一覧の表示
\dt

-- データベースの切り替え
\c データベース名

-- コマンドヘルプの表示
\?

-- PostgreSQLの終了
\q

データベースの作成と基本操作

1. データベースの作成

-- 新しいデータベースの作成
CREATE DATABASE mydb;

-- データベースの切り替え
\c mydb

2. テーブルの作成

-- ユーザーテーブルの作成
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 商品テーブルの作成
CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price INTEGER NOT NULL,
    description TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3. データの操作

データの挿入(INSERT)

-- ユーザーの追加
INSERT INTO users (username, email) VALUES
    ('yamada', 'yamada@example.com'),
    ('suzuki', 'suzuki@example.com');

-- 商品の追加
INSERT INTO products (name, price, description) VALUES
    ('商品A', 1000, '商品Aの説明文'),
    ('商品B', 2000, '商品Bの説明文');

データの取得(SELECT)

-- 全ユーザーの取得
SELECT * FROM users;

-- 条件付きの取得
SELECT * FROM products WHERE price >= 1500;

-- 並び替え
SELECT * FROM products ORDER BY price DESC;

-- 件数制限
SELECT * FROM users LIMIT 5;

データの更新(UPDATE)

-- 商品価格の更新
UPDATE products
SET price = 1500
WHERE name = '商品A';

-- 複数カラムの更新
UPDATE users
SET 
    username = 'tanaka',
    email = 'tanaka@example.com'
WHERE id = 1;

データの削除(DELETE)

-- 特定の商品の削除
DELETE FROM products WHERE id = 1;

-- 条件に合致するデータの削除
DELETE FROM products WHERE price < 1000;

バックアップとリストア

バックアップの作成

# データベース全体のバックアップ
pg_dump dbname > backup.sql

# 特定のテーブルのバックアップ
pg_dump -t tablename dbname > table_backup.sql

バックアップからのリストア

# データベースの作成
createdb newdb

# バックアップからリストア
psql newdb < backup.sql

セキュリティ設定

1. パスワードの変更

-- ユーザーのパスワード変更
ALTER USER username WITH PASSWORD 'new_password';

2. 権限の設定

-- ユーザーの作成
CREATE USER appuser WITH PASSWORD 'password';

-- データベースへの接続権限付与
GRANT CONNECT ON DATABASE mydb TO appuser;

-- テーブルへの権限付与
GRANT SELECT, INSERT, UPDATE ON users TO appuser;

3. アクセス制御の設定

pg_hba.confファイルの編集例:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24          md5

トラブルシューティング

1. 接続エラー

よくある接続エラーと対処法:

  1. パスワード認証失敗

    # パスワードリセット
    sudo -u postgres psql
    ALTER USER postgres PASSWORD 'new_password';
  2. サービスが起動していない

    # サービスの再起動
    sudo systemctl restart postgresql

2. パフォーマンスの問題

  1. スロークエリの特定

    -- スロークエリログの有効化
    ALTER SYSTEM SET log_min_duration_statement = '1000';
    SELECT pg_reload_conf();
  2. インデックスの作成

    -- よく検索されるカラムにインデックスを作成
    CREATE INDEX idx_users_email ON users(email);

開発ツール

1. pgAdmin

pgAdminは、PostgreSQLの管理を容易にする無料のGUIツールです:

  • データベースの作成・管理
  • SQLクエリの実行
  • バックアップ・リストア
  • サーバー監視

2. DBeaver

DBeaverは、複数のデータベースに対応する統合開発環境です:

  • 直感的なインターフェース
  • SQLエディタ
  • ERダイアグラム
  • データエクスポート・インポート

ベストプラクティス

1. 命名規則

-- テーブル名は複数形
CREATE TABLE users (...);
CREATE TABLE products (...);

-- カラム名はスネークケース
CREATE TABLE users (
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    created_at TIMESTAMP
);

2. インデックス設計

-- 主キーは自動的にインデックス化される
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    ...
);

-- よく検索されるカラムにインデックスを作成
CREATE INDEX idx_users_email ON users(email);

-- 複合インデックス
CREATE INDEX idx_products_category_price ON products(category_id, price);

3. バックアップ戦略

  1. 定期的なバックアップ

    # クーロンジョブの例
    0 0 * * * pg_dump dbname > /backup/db_$(date +\%Y\%m\%d).sql
  2. バックアップの検証

    # テスト環境でリストアを確認
    createdb testdb
    psql testdb < backup.sql

まとめ

PostgreSQLの基本的な使い方について解説しました:

  1. インストールと初期設定

    • OS別のインストール方法
    • 基本的な設定
    • 初期データベースの作成
  2. 基本操作

    • データベースの作成
    • テーブルの作成
    • データの操作(CRUD)
  3. 管理とメンテナンス

    • バックアップとリストア
    • セキュリティ設定
    • パフォーマンスチューニング

PostgreSQLは非常に強力なデータベースシステムですが、基本的な使い方は比較的シンプルです。この記事で紹介した基本を押さえた上で、必要に応じて高度な機能を学んでいくことをお勧めします。

次のステップ

PostgreSQLの基本を理解したら、以下の記事も参考にしてください: