1. はじめに
SQLはデータベースを操作するための重要なスキルであり、Web開発やデータ分析において必須の技術です。本記事では、PostgreSQLを使用してSQLの学習環境を構築する方法と、具体的な練習用サンプルを提供します。初心者の方でも分かりやすいように丁寧に説明していきます。
2. PostgreSQLのインストールとセットアップ
Homebrewを使用してインストール(Mac向け)
- Homebrewのインストール(インストールされていない場合)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- PostgreSQLのインストール
brew install postgresql
- サービスの開始
brew services start postgresql
- バージョンの確認
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、サブクエリ、集計関数など、さまざまなクエリを実際に試すことで、実践的なスキルを身につけることができます。この記事のサンプルクエリを参考に、自分なりのデータベースを構築しながら練習してみてください。