PostgreSQLで効率的にSQLを学習するための環境構築と練習サンプル

1. はじめに

SQLはデータベースを操作するための重要なスキルであり、Web開発やデータ分析において必須の技術です。本記事では、PostgreSQLを使用してSQLの学習環境を構築する方法と、具体的な練習用サンプルを提供します。初心者の方でも分かりやすいように丁寧に説明していきます。

2. PostgreSQLのインストールとセットアップ

Homebrewを使用してインストール(Mac向け)

  1. Homebrewのインストール(インストールされていない場合) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. PostgreSQLのインストール brew install postgresql
  3. サービスの開始 brew services start postgresql
  4. バージョンの確認 psql --version

PostgreSQLへの接続

ターミナルから次のコマンドを実行してPostgreSQLに接続します:

psql postgres

3. 練習用のデータベースとテーブルの作成

データベースの作成

次のコマンドで新しいデータベースを作成します:

CREATE DATABASE sql_practice;

データベースに接続するには:

\c sql_practice

テーブルの作成

社員情報を格納するための employees テーブルを作成します。

CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT,
    department VARCHAR(50),
    salary DECIMAL(10, 2),
    hire_date DATE
);

このテーブルには次のような情報を格納します:

  • id:社員のID(自動増分)
  • name:社員の名前
  • age:年齢
  • department:所属部署
  • salary:給与
  • hire_date:入社日

初期データの挿入

次に、サンプルデータをテーブルに挿入します:

INSERT INTO employees (name, age, department, salary, hire_date) VALUES
('田中太郎', 30, '営業', 500000, '2020-04-01'),
('佐藤花子', 25, '人事', 400000, '2021-06-15'),
('鈴木一郎', 35, '開発', 600000, '2018-11-20'),
('高橋次郎', 29, '営業', 450000, '2019-08-10'),
('山田陽子', 32, 'マーケティング', 550000, '2020-01-05');

4. 基本的なSQLクエリの練習

1. データの取得(SELECT文)

すべての社員情報を取得するクエリ:

SELECT * FROM employees;

特定の列(名前と部署のみ)を取得するクエリ:

SELECT name, department FROM employees;

2. 条件付き検索(WHERE句)

年齢が30歳以上の社員を検索する:

SELECT * FROM employees WHERE age >= 30;

部署が「営業」の社員を検索する:

SELECT * FROM employees WHERE department = '営業';

3. データの並び替え(ORDER BY句)

給与の高い順に社員情報を取得する:

SELECT * FROM employees ORDER BY salary DESC;

4. 集計(GROUP BY句と集計関数)

部署ごとの平均給与を計算する:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

5. データの更新(UPDATE文)

特定の社員の給与を更新する:

UPDATE employees SET salary = 480000 WHERE name = '高橋次郎';

6. データの削除(DELETE文)

特定の社員データを削除する:

DELETE FROM employees WHERE name = '佐藤花子';

5. 少し高度な練習クエリ

1. サブクエリの利用

最も給与が高い社員の情報を取得する:

SELECT * FROM employees WHERE salary = (
    SELECT MAX(salary) FROM employees
);

2. JOINを使った結合クエリ

別のテーブル departments を作成し、JOINを使って結合クエリを練習します。

CREATE TABLE departments (
    department_name VARCHAR(50) PRIMARY KEY,
    manager VARCHAR(100)
);

INSERT INTO departments (department_name, manager) VALUES
('営業', '佐藤次郎'),
('人事', '高橋花子'),
('開発', '山本太郎'),
('マーケティング', '中村京子');

部署ごとのマネージャー情報と社員情報を結合して取得する:

SELECT employees.name, employees.department, departments.manager
FROM employees
JOIN departments ON employees.department = departments.department_name;

6. データベースのバックアップとリストア

データベースのバックアップを取る

PostgreSQLでデータベースのバックアップを取るには、次のコマンドを使用します:

pg_dump sql_practice > sql_practice_backup.sql

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

バックアップからデータベースをリストアするには:

psql sql_practice < sql_practice_backup.sql

まとめ

PostgreSQLを使用したSQL学習環境の構築は、SQLの基本から応用までの練習に最適です。シンプルなCRUD操作からJOIN、サブクエリ、集計関数など、さまざまなクエリを実際に試すことで、実践的なスキルを身につけることができます。この記事のサンプルクエリを参考に、自分なりのデータベースを構築しながら練習してみてください。