PostgreSQLのAND・OR・NOTを使った複合条件
生徒
「WHERE句で条件を一つ書くのは分かってきたんですが、条件が二つ以上あるときはどうするんですか?」
先生
「そのときに使うのが、AND・OR・NOTという考え方です。これは日常会話でもよく使っている言葉ですよ。」
生徒
「パソコンをほとんど触ったことがなくても大丈夫でしょうか?」
先生
「大丈夫です。条件を組み合わせるだけなので、買い物や名簿探しに例えて説明します。」
1. SQLとは何か?
SQLは、データベースという「情報を表で整理して保存する箱」に対して命令を出すための言葉です。PostgreSQLは、そのSQLを使ってデータを安全に管理できるデータベースの一つです。
SQLの中でもSELECT文は、表の中から必要な情報だけを取り出すために使われます。そして、条件を指定するときにWHERE句を使います。
2. 複合条件とは?
複合条件とは、「条件が一つだけではなく、複数ある状態」のことです。
たとえば「二十歳以上で、東京都に住んでいる人」や「学生か、会社員の人」といったように、条件が組み合わさっています。PostgreSQLでは、AND・OR・NOTを使って、このような条件を表現します。
3. 今回使うテーブルを確認しよう
以下のusersテーブルを使って、複合条件の動きを見ていきます。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
5 | 伊藤美咲 | 28 | misaki@example.com
4. AND 条件をすべて満たす場合
ANDは、「〜かつ〜」という意味です。二つの条件が両方とも正しい場合だけ、データが表示されます。
日常生活で言うと、「二十歳以上で、会員カードを持っている人」といったイメージです。
SELECT *
FROM users
WHERE age >= 20
AND age < 30;
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
5 | 伊藤美咲 | 28 | misaki@example.com
5. OR どちらかを満たせばよい場合
ORは、「〜または〜」という意味です。どちらか一方の条件を満たしていれば、データが表示されます。
「現金かクレジットカード、どちらかで支払える」と考えると分かりやすいです。
SELECT name, age
FROM users
WHERE age < 20
OR age >= 30;
name | age
---------+-----
佐藤花子 | 19
鈴木一郎 | 30
6. NOT 条件を否定する
NOTは、「〜ではない」という意味です。条件をひっくり返す役割を持っています。
名簿で「この人以外全員」を探すようなイメージです。
SELECT *
FROM users
WHERE NOT age < 25;
このSQLは、「二十五歳未満ではない人」、つまり二十五歳以上の人を表示します。
7. AND・OR・NOTを組み合わせる考え方
複合条件を使うときは、まず日本語で条件を整理することが大切です。
「誰で」「どんな条件で」「除外したいものは何か」を紙に書き出すと、SQLに置き換えやすくなります。
8. 複合条件を使う意味
PostgreSQLでAND・OR・NOTを使えるようになると、必要なデータだけを正確に取り出せるようになります。
これはデータベース操作の基本であり、条件検索を理解する大切な一歩です。
まずは三つの意味を、日常の言葉と結びつけて覚えていきましょう。