どうもニコイチです。大量のデータの中から、まるでピンポイントで宝物を見つけ出すように必要な情報だけを取り出せたら──そんな魔法のような手法があったら便利だと思いませんか? たとえば、本が何千冊も並ぶ図書館で「2016年に出版されたものだけ」「価格が○円以上のものだけ」「ジャンルがノンフィクションで人気のものだけ」など、条件に合った資料だけを一瞬で見つけられたら、一気に作業もはかどるはず。実は、SQLの「WHERE句」や「LIMIT句」、そして「比較演算子」を使うことで、まさにそんな“宝探し”が簡単にできるようになるんです。さあ、次はあなたのデータを自由自在に操る番です!
目次
WHERE句とは?
概要
- WHERE句は、テーブルから「特定の条件に合った行だけを取り出す」ために使います。
- 実際の構文は以下のようになります。
SELECT 列名1, 列名2, ... FROM テーブル名 WHERE 条件式;
条件式
の部分には「この値と等しい」「この値より大きい(または小さい)」などを指定して、欲しいデータを絞り込みます。
具体例(studentsテーブルの場合)
- 以下のように、score(テストの点数)が70以上(>= 70)の人だけ取り出したいときは、
SELECT * FROM students WHERE score >= 70;
- 条件を満たす行(scoreが70以上の人)だけが表示されます。
比較演算子の使い方
WHERE句の条件式には、比較演算子がよく登場します。代表的なものは以下の通りです。
演算子 | 意味 | 例 |
---|---|---|
= | 値が等しい | WHERE name = 'Alice' |
<> | 値が等しくない (≠) | WHERE name <> 'Alice' |
> | より大きい | WHERE score > 80 |
< | より小さい | WHERE score < 80 |
>= | 以上 | WHERE score >= 80 |
<= | 以下 | WHERE score <= 80 |
これらを使えば、「何点以上の人だけ」「特定の名前の人だけ」「2019年の書籍だけ」など、条件をつけて自由にデータを取り出すことができます。
論理演算子(AND、OR、NOT)の使い方
AND
- 複数の条件を「すべて」満たす行を取り出すときに使います。
- たとえば「scoreが80以上 かつ gradeが’B’の人を取り出す」場合は、
SELECT * FROM students WHERE score >= 80 AND grade = 'B';
OR
- 複数の条件の「いずれか一方」を満たせばよいときに使います。
- たとえば「scoreが80以上 または gradeが’C’の人」を取り出す場合は、
SELECT * FROM students WHERE score >= 80 OR grade = 'C';
NOT
- 指定した条件を「満たさない」行を取り出すときに使います。
- たとえば「scoreが80以上 ではない 人(80以上を満たさない人)」の場合は、
SELECT * FROM students WHERE NOT score >= 80;
もしくはWHERE score < 80;
と書いても同じ結果になります。
LIMIT句とは?
- LIMIT句は「取得する件数を制限する」ために使われます。
- たとえば、最初の5件だけ取り出したいときは、
SELECT * FROM テーブル名 LIMIT 5;
- 大量のデータがあっても、そのうち「最初の○行だけ見たい」ときに便利です。
WHEREとCOUNTを組み合わせる
- COUNT(*) は「行数を数える」関数です。
WHERE
で絞り込んだ後に、COUNT(\*)
を使うと「条件に合った行は何件あるか」を調べることができます。SELECT COUNT(*) FROM テーブル名 WHERE 条件式;
- 例:
age < 30
のユーザーの数を数えたいなら、SELECT COUNT(*) FROM users WHERE age < 30;
実際の使用例(booksテーブル)
ここからは「booksテーブル」を使った具体的なクエリ例を示します。
(booksテーブルには、Name
, Author
, Reviews
, Price
, Year
, Genre
などのカラムがあるとします。)
例1:発行年が2016年の書籍を取得
SELECT *
FROM books
WHERE Year = 2016;
- Yearカラムが2016の行(書籍)だけを表示します。
例2:発行年が2019年の書籍の「冊数」を取得(AS句なし)
SELECT COUNT(*)
FROM books
WHERE Year = 2019;
- Yearカラムが2019の書籍が何冊あるかを数えます。
例3:ジャンルがノンフィクション(Non Fiction)の書籍を最初から10行だけ取得
SELECT *
FROM books
WHERE Genre = 'Non Fiction'
LIMIT 10;
- 条件(
Genre = 'Non Fiction'
)を満たす書籍のうち、先頭10件だけを取り出します。
例4:価格(Price)が20ドルより高い書籍を20冊取得
SELECT *
FROM books
WHERE Price > 20
LIMIT 20;
- Priceカラムが20ドルより大きい書籍だけを取り出し、さらに20冊に絞ります。
ANDやORを用いた複数条件の例
- たとえば、以下のように複数の条件を組み合わせることで、「2019年に出版された」「かつ」「Priceが30ドルより安い」書籍のうち、先頭5件が欲しい、というような細かい絞り込みもできます。
SELECT * FROM books WHERE Year = 2019 AND Price < 30 LIMIT 5;
- ORを使えば、「発行年が2019年 または 発行年が2020年の書籍」のように条件を広げられますし、NOTを使えば「指定した条件に当てはまらないもの」を探せます。
まとめ
- WHERE句で条件を指定することで、必要な行だけを取り出せる。
- 比較演算子(=、<、>、<=、>=、<>など) を使い、数値や文字列の値を比較して絞り込む。
- 論理演算子(AND、OR、NOT) を使うと、条件を複数組み合わせたり、否定したりできる。
- LIMIT句で取得する行数を制限できるので、データが大量にあるときに便利。
- COUNT(*) と組み合わせると、条件に合った行数を数えられる。
これらを組み合わせることで、データベースから効率的に必要な情報だけを取り出せます。現実の仕事でも「売上が◯円以上の商品を抽出する」「ユーザー登録が最近の人だけを見る」など、とてもよく使う機能なので、ぜひ練習してみてください。
コメント