SQL入門WHERE句は「婚活の足切り」だ!ANDとORで理想のデータを一本釣り

篩 データベース

WHEREを使いこなして欲しいレコードだけ取得しよう

前回の記事で、SELECT文(データの取得)、UPDATE文(更新)、DELETE文(削除)を解説しました。

これら全ての命令において、最も重要なパーツがあります。
それが「WHERE(ウェア)」句です。

もしWHEREがなかったらどうなるか。

  • 「データをください」→ 全員来る。
  • 「更新して」→ 全員書き換わる。
  • 「削除して」→ 全員消える。

大惨事です。

WHEREは、データベースという混沌とした人混みの中から特定の人物だけを指名する「フィルター」です。

今日はこのフィルターを自在に操り、情報の海から理想のデータだけを一本釣りする技術を伝授します。


基本:イコールと不等号で足切りする

最も基本的な使い方は「完全一致」です。
「田中」という名前の人だけ欲しい場合。

<strong>SELECT * FROM users WHERE name = '田中';</strong>Code language: HTML, XML (xml)

これで、佐藤も鈴木も門前払いです。

数字の場合は、算数で習った「不等号」が使えます。
「20歳以上(20を含む)」の人だけ通したい場合。

<strong>SELECT * FROM users WHERE age >= 20;</strong>Code language: HTML, XML (xml)
  • =: 等しい
  • <> または !=:等しくない(以外)
  • >:より大きい
  • <:より小さい
  • >=:以上
  • <=:以下

これらは基本中の基本です。

SQLに限らずよく出てきますが、呼吸をするように書けるようになってください。


ANDとOR:高望みと妥協の婚活理論

条件は一つとは限りません。
「20代で、かつ、年収1000万以上の人」を探したい。

そんな時は AND (かつ)を使います。

<strong>SELECT * FROM users WHERE age >= 20 AND income >= 1000;</strong>Code language: HTML, XML (xml)

両方の条件を満たすエリートだけが通過できます。条件を増やせば増やすほど結果は少なくなります。

逆に、「20代、または、年収1000万以上の人」ならどうでしょう。
どちらか片方でも満たせばOK。

そんな時は OR (または)を使います。

<strong>SELECT * FROM users WHERE age >= 20 OR income >= 1000;</strong>Code language: HTML, XML (xml)

こちらは条件を増やすほど結果が多くなります。

「ANDは厳しく絞る」「ORは緩く広げる」
この感覚を持ってください。


LIKE:うろ覚えでも許される曖昧検索

「名前が『田』で始まる人を探したいけど、田中か田村か忘れた」
そんなうろ覚えな時は、LIKE (ライク)を使います。

ここで登場する魔法の記号が %(パーセント)です。これは「何かの文字(0文字以上)」を意味します。

<strong>-- 「田」で始まる人(田中、田村、田代まさし...)
SELECT * FROM users WHERE name LIKE '田%';</strong>Code language: HTML, XML (xml)

逆に、「田」で終わる人なら'%田'
どこかに「田」が含まれていればいいなら'%田%'です。

Google検索のような「キーワード検索」は、裏側でこの「%」が必死に働いています。


NULLの罠:イコールでは捕まえられない

SQLには「NULL(ヌル)」という厄介な値があります。

これは「データ未入力」や「無」を意味します。

「年齢が未入力の人」を探したい時、こう書いてはいけません。

筆者は実際にこう書き、NULLなのになぜか取れないと困ったことがあります。

<strong>-- 間違い
SELECT * FROM users WHERE age = NULL;</strong>Code language: HTML, XML (xml)

NULLは「値」ではないため、イコールでは比較できません。
「無」は「等しい」という概念すら持たないのです。

専用の書き方IS NULLを使います。

<strong>-- 正解
SELECT * FROM users WHERE age IS NULL;</strong>Code language: HTML, XML (xml)

逆に「未入力じゃない人」ならIS NOT NULLです。
ここだけ文法が特殊なので初心者は必ずハマります。テストに出ます。


まとめ:条件を制する者はデータを制す

  • =, <, >:基本の足切り。
  • AND:厳しく絞り込む(かつ)。
  • OR:選択肢を広げる(または)。
  • LIKE:曖昧な検索(%を使う)。
  • IS NULL:無を探す専用の言葉。

WHERE句を使いこなせば、100万件のデータの中からたった一つの真実を一瞬で抜き出せます。

逆に、条件指定をミスれば関係ないデータを巻き込んで事故を起こします。
データベースに対する命令は、常に具体的でなければなりません。

「なんかいい感じのデータちょうだい」は通用しないのです。

コメント

タイトルとURLをコピーしました