データベース基礎とSQL入門学んで基礎固め
個人的理解を深めるために、データベースの基本からSQLの基礎までを紹介します。
データベースの基礎
データベースとは
データベース(DB)は、情報を効率的に管理・検索・更新するためのシステムです。
データベースは、データの保存とアクセスを効率化します。
リレーショナルデータベースの概念
リレーショナルデータベースは、データをテーブル形式で管理し、テーブル間の関係を定義します。
以下は基本的な用語です。
用語 | 説明 |
---|---|
テーブル | データを行と列で整理する構造。(例: 顧客テーブル、注文テーブル) |
行(レコード) | テーブル内の1つのデータエントリ。(例: 1人の顧客の情報) |
列(フィールド) | テーブル内のデータの属性。(例: 顧客名、住所) |
主キー(PK) | 各行を一意に識別するための列。(例: 顧客ID) |
外部キー(FK) | 他のテーブルの主キーを参照する列。テーブル間の関係を構築 |
SQLの基礎
SQLとは
SQL(Structured Query Language)は、データベースの操作や管理を行うための言語です。
SQLを使用すると、データの検索、挿入、更新、削除が簡単に行えます。
基本的なSQLクエリ
以下は、SQLの基本的なクエリの例です。
クエリタイプ | 説明 |
---|---|
SELECT | データを検索する。 |
INSERT | 新しいデータを追加する。 |
UPDATE | 既存のデータを更新する。 |
DELETE | データを削除する。 |
それぞれのSQLクエリを使用した場合のテーブルの変化を、具体的な例をもとに説明します。
1. SELECT
データを検索するためのクエリです。
基本形:
SELECT カラム名1, カラム名2, ...
FROM テーブル名
WHERE カラム = 'データ名';
以下の例では、employees
テーブルから name
と department
のデータを、Sales
部署に所属する従業員のみを対象に取得します。
クエリ:
SELECT name, department
FROM employees
WHERE department = 'Sales';
実行前のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5000 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
4 | Dave | IT | 6000 |
実行結果:
name | department |
---|---|
Alice | Sales |
Carol | Sales |
2. INSERT
新しいデータをテーブルに追加します。
基本形:
INSERT INTO テーブル名 (カラム名1, カラム名2, ...)
VALUES (値1, 値2, ...);
以下の例では、employees
テーブルに name
, department
, salary
に対応する値 Eve
, Marketing
, 4500
を挿入します。
クエリ:
INSERT INTO employees (name, department, salary)
VALUES ('Eve', 'Marketing', 4500);
実行前のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5000 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
4 | Dave | IT | 6000 |
実行後のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5000 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
4 | Dave | IT | 6000 |
5 | Eve | Marketing | 4500 |
3. UPDATE
既存のデータを更新します。
基本形:
UPDATE テーブル名
SET カラム名1 = 新しい値1, カラム名2 = 新しい値2, ...
WHERE 条件;
以下の例では、employees
テーブルの salary
を 5200
に更新します。
ただし、条件に一致する行 (name
が Alice
である行) にのみ適用されます。
クエリ:
UPDATE employees
SET salary = 5200
WHERE name = 'Alice';
実行前のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5000 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
4 | Dave | IT | 6000 |
5 | Eve | Marketing | 4500 |
実行後のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5200 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
4 | Dave | IT | 6000 |
5 | Eve | Marketing | 4500 |
4. DELETE
テーブルからデータを削除します。
決定:
DELETE FROM テーブル名
WHERE 条件;
以下の例では、employees
テーブルから条件に一致する行 (name
が Dave
である行) を削除します。
クエリ:
DELETE FROM employees
WHERE name = 'Dave';
実行前のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5200 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
4 | Dave | IT | 6000 |
5 | Eve | Marketing | 4500 |
その他SQLクエリ
基本的なSQLクエリ以外に、WHERE
, ORDER BY
, GROUP BY
についても説明します。
クエリタイプ | 説明 |
---|---|
WHERE | 特定の条件に基づいてデータをフィルタリングする。 |
ORDER BY | 検索結果を特定の順序で並べ替える。 |
GROUP BY | データをグループ化し、集計関数を適用する。 |
以下のテーブルを元に考えていきます。
実行後のテーブル (employees
):
id | name | department | salary |
---|---|---|---|
1 | Alice | Sales | 5200 |
2 | Bob | HR | 4000 |
3 | Carol | Sales | 5500 |
5 | Eve | Marketing | 4500 |
1. 条件指定(WHERE句)
WHERE句を使用して、特定の条件に基づいてデータを検索します。
以下の例では、employees
テーブルから id
が 2
の従業員データを取得します。
クエリ:
SELECT * FROM employees
WHERE id = 2;
実行結果:
id | name | department | salary |
---|---|---|---|
2 | Bob | HR | 4000 |
2. ソート(ORDER BY句)
ORDER BY句を使用して、結果を特定の順序で並べ替えます。
以下の例では、employees
テーブルから従業員のデータを salary
で昇順に並べ替えます。
クエリ:
SELECT * FROM employees
ORDER BY salary ASC;
実行結果:
id | name | department | salary |
---|---|---|---|
2 | Bob | HR | 4000 |
5 | Eve | Marketing | 4500 |
1 | Alice | Sales | 5200 |
3 | Carol | Sales | 5500 |
3. グルーピング(GROUP BY句)
GROUP BY句を使用して、データをグループ化し、集計関数を適用します。
以下の例では、employees
テーブルの各部門 (department
) ごとに平均給与 (AVG(salary)
) を計算します。
クエリ:
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
実行結果:
department | AVG(salary) |
---|---|
Sales | 5350 |
HR | 4000 |
Marketing | 4500 |
Discussion