PostgreSQL - WHERE句:データフィルタリングの扉
こんにちは、未来のデータ魔术師たち!今日は、PostgreSQLの世界を楽しみにしていただきます。特にWHERE句に焦点を当てます。あなたの近所の親切なコンピュータ教師として、私は多くの例と説明を交えてこの冒険を案内します。那么、シートベルトを締めて、潜りましょう!
WHERE句とは?
本題に入る前に、WHERE句が何についているかを理解しましょう。あなたが巨大な図書館(私たちのデータベース)にいるとします。そこには本(私たちのデータ)が満ちています。そして、龍に関する本を全部見つけたいとします。全部の本をチェックするわけじゃないでしょう?ここで、私たちの英雄、WHERE句が登場します!データベースで探しているものを正確にフィルタリングしてくれます。
WHERE句は、テーブルから取得したい行の条件を指定する魔法のフィルタのようなものです。時間を節約し、データベースクエリをはるかに効率的にする強力なツールです。
文法:WHERE句の青写真
WHERE句の基本的な文法を見てみましょう:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
最初は少し脅威に思えるかもしれませんが、レシピとして考えましょう:
- SELECT: 必要な材料(列)を選びます
- FROM: 使用する料理本(テーブル)を選びます
- WHERE: あなたの食事制限(条件)を指定します
例:WHERE句を生き生きとする
例1: 基本的な比較
簡単な例から始めましょう。students
というテーブルがあり、id
、name
、age
という列があります。18歳の学生を全部見つけたいとします。
SELECT name
FROM students
WHERE age = 18;
このクエリは、正確に18歳の学生全員の名前を返します。ここで使う=
は「正確に等しい」と言っています。
例2: オペレーターの使用
WHERE句は等価性に限りません。より複雑な条件を作るためにさまざまなオペレーターを使えます。20歳以上の学生を見つけましょう:
SELECT name, age
FROM students
WHERE age > 20;
これは20歳以上の学生の名前と年齢を返します。>
オペレーターは「より大きい」と言います。
例3: ANDを使った複数の条件
20歳以上でIDが100未満の学生を見つけたい場合は、ANDオペレーターを使います:
SELECT name, age, id
FROM students
WHERE age > 20 AND id < 100;
このクエリは、両方の条件を満たす学生の名前、年齢、IDを返します。
例4: ORを使った代替条件
二つの条件のいずれかを満たす行を見つけたい場合は、ORオペレーターを使います。18歳の学生かIDが42の学生を見つけましょう:
SELECT name, age, id
FROM students
WHERE age = 18 OR id = 42;
これは18歳の学生またはIDが42の学生(または両方!)を返します。
例5: テキストデータの操作
WHERE句は数字だけでなく、テキストデータにも使えます。名前が'A'で始まる学生を見つけましょう:
SELECT name
FROM students
WHERE name LIKE 'A%';
LIKE
オペレーターを使うことでパターンマッチが可能です。%
は任意の文字列を一致させるワイルドカードです。
例6: INを使った複数の値
18歳、19歳、20歳の学生を見つけたい場合は、長いOR文を書く代わりにINオペレーターを使います:
SELECT name, age
FROM students
WHERE age IN (18, 19, 20);
このクエリは18歳、19歳、20歳の学生全員を返します。
例7: 日付の操作
PostgreSQLではWHERE句で日付も操作できます。students
テーブルにenrollment_date
という列があるとします:
SELECT name, enrollment_date
FROM students
WHERE enrollment_date > '2023-01-01';
これは2023年1月1日以降に入学した学生全員を返します。
一般的なWHERE句オペレーター
WHERE句でよく使われるオペレーターのリストです:
オペレーター | 説明 | 例 |
---|---|---|
= | 等しい | WHERE age = 18 |
> | より大きい | WHERE age > 20 |
< | より小さい | WHERE id < 100 |
>= | より大きいか等しい | WHERE age >= 18 |
<= | より小さいか等しい | WHERE id <= 1000 |
<> or != | 等しくない | WHERE age <> 25 |
AND | 論理AND | WHERE age > 20 AND id < 100 |
OR | 論理OR | WHERE age = 18 OR id = 42 |
IN | リスト内のいずれかの値に一致 | WHERE age IN (18, 19, 20) |
LIKE | パターンマッチ | WHERE name LIKE 'A%' |
BETWEEN | 範囲内 | WHERE age BETWEEN 18 AND 25 |
IS NULL | NULL値 | WHERE phone IS NULL |
結論:あなたの新しいスーパーパワー
おめでとうございます!PostgreSQLの旅で新しいスーパーパワーを手に入れました。WHERE句は、データをフィルタリングして必要なデータを見つけるための信頼できる相棒です。練習すれば完璧になりますので、さまざまな条件とオペレーターを試してみてください。
このまとめで、ある生徒が私に言った言葉を思い出しました。「WHERE句を学ぶことは、データの世界で magnifying glass(拡大鏡)を使うことと同じです。」彼の言葉は正しいです!あなたは必要な情報をズームインするためのツールを手に入れました。
探索を続け、クエリを続け、そして最も重要なのは、データベースを楽しむことです。次回まで、ハッピーコーディング!
Credits: Image by storyset