WHERE句とJOIN句の使い方【条件検索とテーブル結合】
前回の記事では、SQLの基本的な操作(SELECT、INSERT、UPDATE、DELETE)について解説しました。
今回は、さらに応用的なSQLの操作として、データを条件付きで取得するWHERE句と、複数のテーブルから
データを結合して取得するJOIN句について説明します。
1.WHERE句とは?
WHERE句は、データベースからデータを取得する際に、特定の条件を指定して絞り込むための文です。
例えば、次のようなテーブルがあったとします。
id | 名前 | 年齢 | 職業 |
---|---|---|---|
1 | 太郎 | 28 | エンジニア |
2 | 花子 | 25 | デザイナー |
3 | 次郎 | 30 | マーケター |
4 | 三郎 | 22 | 学生 |
このテーブルから、年齢が30歳以上の人物を取得したい場合は以下のSQLを実行します。
SELECT * FROM 人物 WHERE 年齢 >= 30;
結果として、次郎のデータだけが取得されます。
2.複数条件の指定(AND, OR, NOT)
WHERE句では、複数の条件を組み合わせて使うこともできます。よく使われるのがAND、OR、NOTです。
- AND: すべての条件を満たすデータを取得
- OR: いずれかの条件を満たすデータを取得
- NOT: 条件に該当しないデータを取得
例えば、年齢が30歳以上かつ職業が「エンジニア」の人物を取得する場合は次のように書きます。
SELECT * FROM 人物 WHERE 年齢 >= 30 AND 職業 = 'エンジニア';
また、年齢が30歳未満の人物を除外したい場合はNOTを使います。
SELECT * FROM 人物 WHERE NOT 年齢 < 30;
3.JOIN句とは?
JOIN句は、複数のテーブルを結合してデータを取得するために使います。
実際のデータベースでは、異なるテーブルに分けられたデータを組み合わせて利用することがよくあります。
例えば、次の2つのテーブルがあるとします。
人物テーブル
id | 名前 | 年齢 | 職業 |
---|---|---|---|
1 | 太郎 | 28 | エンジニア |
2 | 花子 | 25 | デザイナー |
3 | 次郎 | 30 | マーケター |
会社テーブル
会社_id | 名前 | 会社名 |
---|---|---|
1 | 太郎 | 株式会社A |
2 | 花子 | 株式会社B |
3 | 次郎 | 株式会社C |
人物テーブルと会社テーブルを結合して、各人物の会社情報を一緒に取得したい場合はJOIN句を使います。
4.INNER JOINの使い方
INNER JOINは、結合する両方のテーブルに共通するデータだけを取得します。
例えば、人物と会社を名前で結合する場合は以下のSQLになります。
SELECT 人物.名前, 人物.職業, 会社.会社名
FROM 人物
INNER JOIN 会社 ON 人物.名前 = 会社.名前;
結果は以下のようになります。
名前 | 職業 | 会社名 |
---|---|---|
太郎 | エンジニア | 株式会社A |
花子 | デザイナー | 株式会社B |
次郎 | マーケター | 株式会社C |
5.LEFT JOINとRIGHT JOINの使い方
LEFT JOINは、左側のテーブルにあるすべてのデータを取得し、右側のテーブルに一致するデータがない場合は
NULLを返します。
例えば、左側の人物テーブルにあるすべてのデータを取得し、会社テーブルに該当しない場合はNULLを返す
SQLは以下のようになります。
SELECT 人物.名前, 人物.職業, 会社.会社名
FROM 人物
LEFT JOIN 会社 ON 人物.名前 = 会社.名前;
RIGHT JOINはその逆で、右側のテーブルを優先します。
6.まとめ
この記事では、SQLのWHERE句による条件付き検索と、JOIN句によるテーブル結合について解説しました。
これらの技術を使うことで、より複雑なデータベース操作が可能になります。
コメント