
【入門】PostgreSQLをインストールして簡単なデータベースを作ってみよう
PostgreSQLのインストール方法から、基本的なデータベースの作成、テーブルの操作まで、初心者にもわかりやすく解説します。
【入門】PostgreSQLをインストールして簡単なデータベースを作ってみよう
PostgreSQLは、信頼性が高く、機能が豊富なオープンソースのリレーショナルデータベースです。この記事では、PostgreSQLのインストール方法から基本的なデータベースの作成、テーブルの操作まで、初心者にもわかりやすく解説します。
PostgreSQLとは?
PostgreSQLは以下のような特徴を持つデータベース管理システム(DBMS)です:
-
オープンソース
- 無料で使用可能
- 活発なコミュニティ
- 豊富なドキュメント
-
高い信頼性
- ACID準拠
- トランザクション管理
- 障害復旧機能
-
豊富な機能
- JSON対応
- 地理情報システム(PostGIS)
- フルテキスト検索
インストール方法
Windowsの場合
-
インストーラーのダウンロード
- PostgreSQLの公式サイトにアクセス
- 最新版のインストーラーをダウンロード
-
インストールの実行
# インストーラーを実行し、以下の手順で進める 1. インストール先を選択 2. 必要なコンポーネントを選択 3. データディレクトリを設定 4. パスワードを設定
-
環境変数の設定
- システム環境変数のPATHに以下を追加:
C:\Program Files\PostgreSQL\15\bin
- システム環境変数のPATHに以下を追加:
Macの場合
-
Homebrewを使用したインストール
# Homebrewのインストール(未インストールの場合) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # PostgreSQLのインストール brew install postgresql@15
-
サービスの起動
# PostgreSQLサービスの起動 brew services start postgresql@15
Linuxの場合(Ubuntu)
-
パッケージのインストール
# パッケージリストの更新 sudo apt update # PostgreSQLのインストール sudo apt install postgresql postgresql-contrib
-
サービスの確認
# サービスの状態確認 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. 接続エラー
よくある接続エラーと対処法:
-
パスワード認証失敗
# パスワードリセット sudo -u postgres psql ALTER USER postgres PASSWORD 'new_password';
-
サービスが起動していない
# サービスの再起動 sudo systemctl restart postgresql
2. パフォーマンスの問題
-
スロークエリの特定
-- スロークエリログの有効化 ALTER SYSTEM SET log_min_duration_statement = '1000'; SELECT pg_reload_conf();
-
インデックスの作成
-- よく検索されるカラムにインデックスを作成 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. バックアップ戦略
-
定期的なバックアップ
# クーロンジョブの例 0 0 * * * pg_dump dbname > /backup/db_$(date +\%Y\%m\%d).sql
-
バックアップの検証
# テスト環境でリストアを確認 createdb testdb psql testdb < backup.sql
まとめ
PostgreSQLの基本的な使い方について解説しました:
-
インストールと初期設定
- OS別のインストール方法
- 基本的な設定
- 初期データベースの作成
-
基本操作
- データベースの作成
- テーブルの作成
- データの操作(CRUD)
-
管理とメンテナンス
- バックアップとリストア
- セキュリティ設定
- パフォーマンスチューニング
PostgreSQLは非常に強力なデータベースシステムですが、基本的な使い方は比較的シンプルです。この記事で紹介した基本を押さえた上で、必要に応じて高度な機能を学んでいくことをお勧めします。
次のステップ
PostgreSQLの基本を理解したら、以下の記事も参考にしてください: