CodeGym /コース /SQL SELF /比較演算子 (=, >, <, <>) を使ったデータのフィルタリング

比較演算子 (=, >, <, <>) を使ったデータのフィルタリング

SQL SELF
レベル 2 , レッスン 1
使用可能

さて、もうSELECTコマンドの使い方は知ってるよね。少なくとも、データベースからデータを取り出したり、必要なカラムを選んだり、生データをちょっと便利な情報に変えるクエリは書けるようになったはず。そろそろ、魔法のパレットに「フィルター」を追加しよう。そう、今日はデータのフィルタリングについて話すよ。使うのは=><<>みたいな比較演算子だ。

でっかいテーブルを扱うとき、全部のデータを見る必要はないよね(カオスに飛び込みたいなら別だけど)。必要な行だけを抜き出すために、SQLではWHEREキーワードを使うんだ。これで、各行がクエリの結果に入るための条件を指定できる。で、その条件に使うのが比較演算子ってわけ。

WHEREでのフィルタリング構文

SELECT カラム1, カラム2
FROM テーブル
WHERE 条件;

シンプルな構造だよ:FROMでテーブルを指定した後にWHEREを書いて、どんな条件で行を選ぶか書くだけ。

例として、studentsテーブルからデータを取り出してみよう:

SELECT name, age
FROM students
WHERE age > 18;

このクエリは18歳より上の学生(名前と年齢)だけを選ぶよ。簡単でしょ?じゃあ、比較演算子の世界に飛び込もう。

基本の比較演算子

SQLにはいくつかの比較演算子があって、好きなようにデータをフィルタできる。数学で見たことあるやつだけど、ちょっとだけSQL流のルールがあるから確認しよう。よく使うやつはこれ:

  1. = — 等しい。
  2. <> — 等しくない(!=も一部のDBで使えるけど、<>がSQL標準だからおすすめ)。
  3. > — より大きい。
  4. < — より小さい。
  5. >= — 以上。
  6. <= — 以下。

比較演算子の表

オペレーター 意味 結果
= 等しい age = 20 年齢が20の行を返す
<> 等しくない age <> 20 年齢が20じゃない行を返す
> より大きい age > 18 年齢が18より大きい行を返す
< より小さい age < 18 年齢が18より小さい行を返す
>= 以上 age >= 18 年齢が18以上の行を返す
<= 以下 age <= 18 年齢が18以下の行を返す

比較演算子の使い方例

例1: 20歳より上の学生を取り出す

これがテーブルだよ:

id name age
1 Alex Lin 22
2 Anna Song 19
3 Otto Art 21
SELECT name, age
FROM students
WHERE age > 20;

ここではage > 20という条件を指定して、20歳を超える学生だけを選んでる。19歳の学生がいても、残念だけど結果には入らない。

この場合の結果はこうなる:

name age
Alex Lin 22
Otto Art 21

Anna Songさんは19歳だから選ばれなかったね。

例2: 給料が50,000以上の社員を取り出す

これがemployeesテーブル:

first_name last_name salary
Julia Kim 48000
Marcus Lee 52000
Anya Patel 50000
Ethan Zhou 61000

SQLクエリはこれ:

SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;

このクエリは給料が50,000ちょうどそれ以上の社員を全部返すよ。イコールもちゃんと含まれる!

first_name last_name salary
Marcus Lee 52000
Anya Patel 50000
Ethan Zhou 61000

例3: 価格が100未満の商品を取り出す

product_name price
USB Cable 85
Wireless Mouse 150
Notebook 60
Mechanical Pencil 45
SELECT product_name, price
FROM products
WHERE price < 100;

ネットショップなら、こんなクエリで100未満の商品だけを選べるよ(たとえば「全部99円!」みたいなキャンペーン用に)。

product_name price
USB Cable 85
Notebook 60
Mechanical Pencil 45

例4: 特定のidを持つユーザーを除外する

SELECT id, username
FROM users
WHERE id <> 1;

このクエリはidが1のユーザー以外を全部選ぶよ。<>は「この値じゃないやつ全部ちょうだい」って意味。

usersテーブル:

id username
1 admin
2 elena.gray
3 tom.bishop
4 aria.noble

クエリの結果:

id username
2 elena.gray
3 tom.bishop
4 aria.noble

比較演算子でフィルタリングするときのよくあるミス

フィルタ付きクエリを書き始めたばかりだと、ミスはよくある。よくあるパターンをいくつか紹介するね:

問題1: カラム名のミス

クエリでカラム名を間違えると、PostgreSQLはエラーを出す。例えば:

SELECT name, age
FROM students
WHERE ages > 18; -- エラー: カラム "ages" は存在しない

クエリを書く前に、カラム名が正しいか必ずチェックしよう。

問題2: 比較演算子の使い間違い

初心者がよくやるのが、演算子の順番を間違えること。例えば:

SELECT name, age
FROM students
WHERE age => 18; -- エラー: 演算子が間違ってる

正しい構文は>=で、=>じゃないよ。

問題3: 存在しない値でフィルタする

テーブルに存在しない値でフィルタすると、クエリは動くけど結果は空っぽになる。例えば:

SELECT name
FROM students
WHERE age = 999; -- 結果: 0行

これは構文エラーじゃないけど、データが出ると思ってたら混乱するかも。

実践での使いどころ

比較演算子を使ったデータのフィルタリングは、いろんな場面で使えるよ:

  • データ分析: 例えば、10,000ルピー以上使ったお客さんだけを選ぶとか。
  • レポート: 平均より給料が高い社員を選ぶとか。
  • モニタリング: ここ1ヶ月アクティブじゃなかったユーザーを追跡するとか。

SQLなら巨大なテーブルから必要なデータをサクッと取り出せるし、比較演算子はその第一歩だよ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION