この記事で分かること
- WHERE句とは何か と、なぜSQLでよく使うのかが分かります。
=><>=<=を使って、条件付きでデータを取り出す基本 を学べます。- 文字列条件や
ANDORを使った、複数条件の書き方 が分かります。 - SQL初心者が WHERE 句でつまずきやすいポイントを、具体例つきで確認 できます。
はじめに:SQLは「全部取る」だけでは足りない
SELECT * FROM users; のようなSQLを最初に覚えると、
「テーブルの中身をそのまま見る」ことはできるようになります。
ただ、実際にSQLを使う場面では、
- 30歳以上のユーザーだけ見たい
- 東京に住んでいる人だけ取り出したい
- 特定の商品だけ確認したい
というように、条件を付けて必要なデータだけを絞り込む ことがほとんどです。
そのときに使うのが WHERE句 です。
この記事では、SQLほぼ初心者の方向けに、
- WHERE句の基本構文
- 数値や文字列で条件を付ける方法
ANDORを使って複数条件を組み合わせる方法
を、サンプルテーブルを使いながらやさしく整理していきます。
1. WHERE句とは何か
WHERE句は、「どの行を取り出すか」を条件で指定するための部分です。
基本形は次のとおりです。
SELECT 列名
FROM テーブル名
WHERE 条件;
たとえば、users テーブルから 30 歳以上の人だけを取り出したいなら、次のように書きます。
SELECT *
FROM users
WHERE age >= 30;
この WHERE age >= 30 が、「年齢が30以上の行だけを返してください」という条件です。
ポイントは、WHERE句を書かないと全件、書くと条件に一致した行だけになることです。
2. まずは数値の条件から覚える
WHERE句を覚えるときは、まず数値での比較から始めるのが分かりやすいです。
2-1. = で一致を調べる
SELECT *
FROM users
WHERE age = 25;
ageが 25 の行だけを取り出します。=は「等しい」という意味です。
2-2. > < で大小を比べる
SELECT *
FROM users
WHERE age > 30;
- 30 より大きい年齢の行だけを取り出します。
SELECT *
FROM users
WHERE age < 30;
- 30 未満の行だけを取り出します。
2-3. >= <= で以上・以下を表す
SELECT *
FROM users
WHERE age >= 30;
- 30 以上の行を取り出します。
SELECT *
FROM users
WHERE age <= 30;
- 30 以下の行を取り出します。
「30を含むかどうか」で > と >=、< と <= を使い分けるのが基本です。
3. 文字列で条件を付ける
数値だけでなく、文字列に対しても WHERE 句を使えます。
SELECT *
FROM users
WHERE city = 'Tokyo';
cityが'Tokyo'の行だけを取り出します。
ここでのポイントは、文字列はシングルクォート ' ' で囲む ことです。
たとえば、次のようにクォートなしで書くとエラーになることがあります。
SELECT *
FROM users
WHERE city = Tokyo;
SQLでは、Tokyo を文字列ではなく、列名や識別子のように解釈しようとしてしまうためです。
4. 複数条件を組み合わせる
WHERE句は、1つの条件だけでなく、複数の条件を組み合わせることもできます。
4-1. AND で「両方満たす」
SELECT *
FROM users
WHERE age >= 30
AND city = 'Osaka';
- 年齢が30以上 かつ 大阪在住のユーザーだけを取り出します。
AND は、「左も右も両方満たす」という意味です。
4-2. OR で「どちらかを満たす」
SELECT *
FROM users
WHERE city = 'Tokyo'
OR city = 'Osaka';
- 東京または大阪のユーザーを取り出します。
OR は、「どちらか一方でも満たせばOK」という意味です。
4-3. AND と OR を混ぜるときは注意
たとえば、次のような条件を書くこともあります。
SELECT *
FROM users
WHERE age >= 30
AND city = 'Tokyo'
OR city = 'Osaka';
ただし、AND と OR を混ぜると、どの順番で条件が評価されるか が分かりにくくなります。
これは、四則演算で + - と * / を混ぜるときに、先に掛け算・割り算が計算されるのと少し似ています。
たとえば、
2 + 3 * 4
は、左から順に 2 + 3 = 5、5 * 4 = 20 とは計算されず、
先に 3 * 4 が計算されて、2 + 12 = 14 になります。
SQLでも同じように、AND と OR が混ざるときは、AND の方が OR より先に評価されるのが基本です。
つまり、次のSQLは
WHERE age >= 30
AND city = 'Tokyo'
OR city = 'Osaka'
次のように解釈されるイメージです。
WHERE (age >= 30 AND city = 'Tokyo')
OR city = 'Osaka'
この意味だと、大阪のユーザーは年齢に関係なく含まれる ことになります。
「30歳以上で、東京または大阪」としたかったのに、意図とズレる可能性があります。
初心者のうちは、かっこを使って明示する方が安全です。
SELECT *
FROM users
WHERE age >= 30
AND (city = 'Tokyo' OR city = 'Osaka');
このように書けば、「30歳以上、かつ東京または大阪」という意図がはっきり伝わります。
5. サンプルテーブルでWHERE句を試してみよう
ブラウザ内SQLiteやオンラインSQLプレイグラウンドが使えるなら、次のサンプルでそのまま試せます。
5-1. テーブル作成とデータ投入
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
city TEXT
);
INSERT INTO users (name, age, city) VALUES
('Alice', 25, 'Tokyo'),
('Bob', 32, 'Osaka'),
('Carol', 29, 'Nagoya'),
('Dave', 41, 'Fukuoka');
5-2. WHERE句の練習例
SELECT *
FROM users
WHERE age >= 30;
SELECT name, city
FROM users
WHERE city = 'Tokyo';
SELECT *
FROM users
WHERE age >= 30
AND city = 'Osaka';
まずはこの3つを打ってみるだけでも、
- 数値条件
- 文字列条件
- 複数条件
の違いがかなり理解しやすくなります。
6. WHERE句で初心者がつまずきやすいポイント
6-1. 文字列をクォートで囲い忘れる
WHERE city = 'Tokyo'
のように、文字列は ' ' で囲みます。
これを忘れると、エラーや意図しない動作の原因になります。
6-2. = と == を混同する
プログラミング言語によっては == を使うことがありますが、
SQLでは通常 = を使います。
6-3. AND と OR の意味があいまいになる
AND= 両方満たすOR= どちらかを満たす
この違いがあいまいなままだと、思った結果になりません。
迷ったら、かっこを使って条件のまとまりを明示するのがおすすめです。
6-4. WHERE句は「行を絞り込むもの」と意識する
WHERE句は、列を選ぶものではなく、行を絞り込むものです。
SELECT→ どの列を表示するかWHERE→ どの行を取り出すか
と役割を分けて覚えると整理しやすくなります。
7. まとめ
WHERE句を使うと、SQLで 必要なデータだけを絞り込んで取り出せる ようになります。
今回のポイントをまとめると、次のとおりです。
- WHERE句は「どの行を取り出すか」を決める
- 数値条件では
=><>=<=を使う - 文字列条件では
'Tokyo'のようにシングルクォートで囲む - 複数条件では
ANDORを使い、必要ならかっこで明示する
SQL初心者にとって、WHERE句は 最初にしっかり身につけたい超基本 の1つです。SELECT * FROM users; に慣れたら、次は WHERE を足して「必要な行だけ取る」感覚をつかんでみてください。
次に読む
WHERE句を試せる環境をまだ用意していない場合や、まずはその場でSQLを打ってみたい場合は、次の記事もおすすめです。
- はじめてのSQL実行はここで:無料オンライン環境でのSQLお試し手順
- 外部の無料SQLプレイグラウンドを使って、すぐにSQLを試す方法をまとめています。
- このページだけで完結!ブラウザ内SQLiteで安全にSQL練習
- このサイト内でSQLを試せるブラウザ内SQLiteの使い方を紹介しています。
- SQL学習ロードマップ
- SQLをこれからどんな順番で学ぶとよいか、全体像をつかみたい方はこちら。

