【SQL】WHERE句で条件を指定して絞り込む

SQL

こんにちは、かつコーチです。

前回はSELECT文の基本を解説しましたが、実務では「全件取得」よりも「条件に合うデータだけ取得したい」場面がほとんどです。
例えば「30歳以上の会員だけ取得したい」「特定のメールアドレスのユーザーを探したい」といったケースです。

こうした絞り込みを実現するのがWHERE句です。
この記事では、前回と同じusersテーブルを使ってWHERE句の使い方を解説します。

WHERE句とは?

WHERE句の役割

WHERE句とは、SELECT文に条件を追加し、条件に一致する行だけを取得するための構文です。
「WHERE(どこで)」という単語の通り、「どの行を対象にするか」を指定します。

基本構文

SELECT カラム名 FROM テーブル名 WHERE 条件;

例えば、ageが30以上の会員だけを取得したい場合は、以下のように書きます。

SELECT name, age FROM users WHERE age >= 30;
name    | age
--------+-----
佐藤花子 | 34

よく使う比較演算子

WHERE句では、以下のような比較演算子を使って条件を指定します。

演算子意味使用例
=等しいWHERE age = 28
!= または <>等しくないWHERE age != 28
>より大きいWHERE age > 28
<より小さいWHERE age < 28
>=以上WHERE age >= 28
<=以下WHERE age <= 28

文字列を条件にする場合

文字列を条件にする場合は、値をシングルクォート(')で囲みます。

SELECT * FROM users WHERE name = '田中太郎';

数値の場合はクォートが不要ですが、文字列の場合は必ずクォートが必要です。
このルールを忘れると、次のようなエラーにつながります。

❌ SELECT * FROM users WHERE name = 田中太郎;
-- カラム名として解釈され、エラー(Unknown column '田中太郎' in 'where clause')になる

✅ SELECT * FROM users WHERE name = '田中太郎';

私も学習を始めたばかりの頃、このUnknown columnエラーの意味が分からず、10分ほど原因調査に費やしたことがあります。
「クォート忘れ」はSQL初心者が最初にハマる定番のエラーなので、覚えておくと役立ちます。

AND・ORで複数条件を組み合わせる

AND:すべての条件を満たす

複数の条件をすべて満たす行を取得したい場合は、ANDでつなぎます。

SELECT name, age FROM users WHERE age >= 25 AND age <= 35;

OR:いずれかの条件を満たす

いずれかの条件を満たせば良い場合は、ORを使います。

SELECT name, age FROM users WHERE age = 22 OR age = 34;

AND・OR・NOTを使った条件の組み立て方は、次のカテゴリ(条件・演算子)でさらに詳しく解説します。

つまずきやすい設定・注意点

NULLを=で比較できない

WHERE句で特に初心者がつまずきやすいのが、NULL(値が存在しないことを表す特殊な状態)の扱いです。

❌ SELECT * FROM users WHERE age = NULL;
-- 常に結果が0件になる(エラーにはならないが意図通り動かない)

✅ SELECT * FROM users WHERE age IS NULL;

age = NULLという書き方は、エラーにはならないものの常に結果が返ってきません。
NULLの詳しい扱い方は、条件・演算子カテゴリのSB14で改めて解説します。

大文字小文字の扱い

MySQLの文字列比較は、デフォルトの設定では大文字小文字を区別しない場合があります(照合順序の設定に依存)。
環境によって挙動が変わるため、「大文字小文字を区別したいのに一致してしまう」「その逆」といった現象が起きたら、テーブルの照合順序(collation)設定を確認してみましょう。

まとめ

この記事のポイント

  • WHERE句はSELECT文に条件を追加し、条件に一致する行だけを取得するための構文
  • 比較演算子(=><など)で条件を指定できる
  • 文字列を条件にする場合は必ずシングルクォートで囲む
  • 複数条件はAND(すべて満たす)・OR(いずれか満たす)で組み合わせる
  • NULLの比較には=ではなくIS NULLを使う

次に読むべき記事

  • SELECT文の基本:データを取得する
  • ORDER BYで並び替える

タグ: SQL, 初心者向け, 基本文法

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