はじめに
SQL研修#3に入ります!
研修#2で学んだ基礎を土台に、今回は「比較・論理・算術演算子」の使い方を学びます。
これらをマスターすると、より複雑な条件でデータを絞り込んだり、集計したりと、SQLでできることの幅がぐっと広がります。
一つずつ着実に身につけていきましょう!
SQL研修#2をまだご覧になっていない方は、まずは以下の記事から始めてください。
研修を進める中で疑問や不明点があれば、いつでもお気軽にご連絡ください。
質問は、こちらのX(旧Twitter)アカウントまでどうぞ!
【Xアカウントはこちら】
DM(ダイレクトメッセージ)をお送りください。
できるだけ早く返信し、皆さんが安心して学習を続けられるようサポートします。
この記事を読んだときのゴール
- 比較・論理・算術演算子を理解する
- 比較・論理・算術演算子を自分で実行できるようになる
比較・論理・算術演算子
比較・論理・算術演算子はSQL以外にもプログラミング言語全体で使える仕組みです。
ここで覚えておけば、書き方は異なりますが、次のPython研修やその他のプログラミング習得に使えます。
ぜひ、下記で実践しながら覚えてください。
比較・論理・算術演算子実装のための準備
- サンプルデータ作成
- SQL実行結果の確認
・サンプルデータ作成
まずは比較・論理・算術演算子を実装してみるために、以下のSQLを実行し、「users」テーブルに対してサンプルデータが29行追加されます。
INSERT INTO users (user_id, username, email, phone_number, password, age, image, created_at, is_active) VALUES ('U002','user002','user002@example.com','090-1111-0002','pass002',30,'img/u002.png','2025-01-02 10:00:00',FALSE), ('U003','user003','user003@example.com','090-1111-0003','pass003',28,'img/u003.png','2025-01-03 11:00:00',TRUE), ('U004','user004','user004@example.com','090-1111-0004','pass004',32,'img/u004.png','2025-01-04 12:00:00',TRUE), ('U005','user005','user005@example.com','090-1111-0005','pass005',27,'img/u005.png','2025-01-05 13:00:00',FALSE), ('U006','user006','user006@example.com','090-1111-0006','pass006',35,'img/u006.png','2025-01-06 14:00:00',TRUE), ('U007','user007','user007@example.com','090-1111-0007','pass007',29,'img/u007.png','2025-01-07 15:00:00',TRUE), ('U008','user008','user008@example.com','090-1111-0008','pass008',24,'img/u008.png','2025-01-08 16:00:00',FALSE), ('U009','user009','user009@example.com','090-1111-0009','pass009',31,'img/u009.png','2025-01-09 17:00:00',TRUE), ('U010','user010','user010@example.com','090-1111-0010','pass010',26,'img/u010.png','2025-01-10 18:00:00',TRUE), ('U011','user011','user011@example.com','090-1111-0011','pass011',34,'img/u011.png','2025-01-11 09:30:00',FALSE), ('U012','user012','user012@example.com','090-1111-0012','pass012',28,'img/u012.png','2025-01-12 10:30:00',TRUE), ('U013','user013','user013@example.com','090-1111-0013','pass013',22,'img/u013.png','2025-01-13 11:30:00',TRUE), ('U014','user014','user014@example.com','090-1111-0014','pass014',37,'img/u014.png','2025-01-14 12:30:00',FALSE), ('U015','user015','user015@example.com','090-1111-0015','pass015',26,'img/u015.png','2025-01-15 13:30:00',TRUE), ('U016','user016','user016@example.com','090-1111-0016','pass016',29,'img/u016.png','2025-01-16 14:30:00',TRUE), ('U017','user017','user017@example.com','090-1111-0017','pass017',33,'img/u017.png','2025-01-17 15:30:00',FALSE), ('U018','user018','user018@example.com','090-1111-0018','pass018',21,'img/u018.png','2025-01-18 16:30:00',TRUE), ('U019','user019','user019@example.com','090-1111-0019','pass019',27,'img/u019.png','2025-01-19 17:30:00',TRUE), ('U020','user020','user020@example.com','090-1111-0020','pass020',25,'img/u020.png','2025-01-20 18:30:00',FALSE), ('U021','user021','user021@example.com','090-1111-0021','pass021',36,'img/u021.png','2025-01-21 09:45:00',TRUE), ('U022','user022','user022@example.com','090-1111-0022','pass022',23,'img/u022.png','2025-01-22 10:45:00',TRUE), ('U023','user023','user023@example.com','090-1111-0023','pass023',30,'img/u023.png','2025-01-23 11:45:00',FALSE), ('U024','user024','user024@example.com','090-1111-0024','pass024',28,'img/u024.png','2025-01-24 12:45:00',TRUE), ('U025','user025','user025@example.com','090-1111-0025','pass025',32,'img/u025.png','2025-01-25 13:45:00',TRUE), ('U026','user026','user026@example.com','090-1111-0026','pass026',27,'img/u026.png','2025-01-26 14:45:00',FALSE), ('U027','user027','user027@example.com','090-1111-0027','pass027',24,'img/u027.png','2025-01-27 15:45:00',TRUE), ('U028','user028','user028@example.com','090-1111-0028','pass028',29,'img/u028.png','2025-01-28 16:45:00',TRUE), ('U029','user029','user029@example.com','090-1111-0029','pass029',35,'img/u029.png','2025-01-29 17:45:00',FALSE), ('U030','user030','user030@example.com','090-1111-0030','pass030',26,'img/u030.png','2025-01-30 18:45:00',TRUE);
・SQL実行結果の確認
実際にデータが追加されたかは以下SELECT文で確認できます。
SELECT * FROM users;
▼出力結果

それでは、サンプルデータを作成したら、比較演算子・論理演算子・算術演算子を試してみましょう。
比較演算子(値を比べる)
- 比較演算子とは
- 比較演算子の例
- 比較演算子一覧表
- SQLの実行
・比較演算子とは
比較演算子(ひかくえんざんし)データベースの巨大な表の中から、目的のデータだけを絞り込むための条件を指定します。※主にWHERE句などで使われます。
たくさんの商品が並んでいるお店で、店員さんに「りんごをください」とお願いする場面を想像してみてください。この「りんごを」という部分が、データを絞り込むための条件です。
・比較演算子の例
「欲しい商品がりんご」をSQLで書くと以下のようになります。
WHERE 商品名 = ‘りんご’
・比較演算子一覧表
演算子 | 意味 | 例 | 例の説明 |
---|---|---|---|
= | 等しい | user_id = 'U001' | ユーザIDが 'U001' の行だけを対象にする。 |
<> | 等しくない | age <> 20 | 20歳ではない行だけを対象にする。 |
<, <=, >, >= | 大小比較 | age >= 20 | 20歳以上の行だけを対象にする。 |
BETWEEN a AND b | a〜bの範囲 | age BETWEEN 20 AND 29 | 20〜29歳の行だけを対象にする。 |
LIKE | 部分一致 | email LIKE '%@example.com' | 任意の文字列に続く @example.com で終わる メールだけを対象にする。 |
・SQLの実行
1. =
等しい
ユーザIDがU010 のユーザのデータを抽出してください。
SELECT user_id, username, age FROM users WHERE user_id = 'U010';
▼出力結果

2. <>
等しくない(≠)
30歳以外のユーザのデータを抽出してください。
SELECT user_id, age FROM users WHERE age <> 30;
▼出力結果

3. <, <=, >, >=
大小比較
28才以上のユーザのデータを抽出してください。
SELECT user_id, age FROM users WHERE age >= 28;
▼出力結果

4. BETWEEN a AND b
20〜29才のユーザのデータを抽出してください。
SELECT user_id, age FROM users WHERE age BETWEEN 20 AND 29;
▼出力結果

5. LIKE
部分一致
例:「0@example.com」で終わるメール
SELECT user_id, email FROM users WHERE email LIKE '%0@example.com';
▼出力結果

論理演算子(条件をつなぐ)
- 論理演算子とは
- 論理演算子の例
- 論理演算子一覧表
- SQLの実行
・論理演算子とは
論理演算子(ろんりえんざんし)は、複数の条件をつなげて、より詳しい絞り込みを行うための演算子です。
店員さんに欲しいものをお願いする時も、条件を組み合わせることがあります。
「りんごで、値段が150円以下のもの」や「りんごか、あるいはみかん」のように、複数の条件を組み合わせてデータを絞り込むことができます。
論理演算子は、まるで言葉の「かつ」「または」「~ではない」のように、複数の条件を組み合わせて「もっと複雑な探し方」をデータベースに伝えるためのものです。
・論理演算子の例
「りんごで、値段が150円以下」をSQLで書くと以下のようになります。
WHERE 商品名 = ‘りんご’ AND 値段 <= 150
「欲しい商品がりんごか、あるいはみかん」をSQLで書くと以下のようになります。
WHERE 商品名 = ‘りんご’ OR 商品名 = ‘みかん’
・論理演算子一覧表
演算子 | 意味 | 例 | 例の説明 |
---|---|---|---|
AND | かつ | age >= 20 AND is_active IS TRUE | 20歳以上 かつ 利用中ユーザーだけを対象にする。 |
OR | または | age < 18 OR is_active IS FALSE | 18歳未満 または 利用中でないユーザーのどちらかに当てはまる行を対象にする。 |
NOT | 否定 | NOT (email LIKE '%@example.com') | @example.comで終わらないメールだけを対象にする。 |
・SQLの実行
1. AND(かつ):条件を“両方”満たす
30歳以上 かつ 利用中(1)のユーザのデータを抽出してください。
SELECT user_id, age, is_active FROM users WHERE age >= 30 AND is_active IS TRUE;
▼出力結果

2. OR(または):どちらか片方でもOK
30歳以上 または 利用中(1)のユーザのデータを抽出してください。
SELECT user_id, age, is_active FROM users WHERE age >= 30 OR is_active IS TRUE;
▼出力結果

3. NOT(否定):条件を“外す”
利用中ではないユーザのデータを抽出してください。
SELECT user_id, is_active FROM users WHERE NOT (is_active IS TRUE);
▼出力結果

算術演算子(計算)
- 算術演算子とは
- 算術演算子の例
- 算術演算子一覧表
- SQLの実行
・算術演算子とは
算術演算子(さんじゅつえんざんし)は、データベース内で足し算、引き算、掛け算、割り算など数値の計算を行うための演算子です
SELECT句やWHERE句などで使われます。
店員さんに「税込み価格を教えてください」とお願いする場面を想像してみてください。この時、店員さんは商品の価格に消費税を足して計算してくれます。このような計算をデータベースに行わせるのが算術演算子です。
・算術演算子の例
「商品の税(10%)込み価格を計算する」をSQLで書くと以下のようになります。
SELECT 商品名, 値段 * 1.1 FROM 商品
・算術演算子一覧表
演算子 | 意味 | 例 | 例の説明 |
---|---|---|---|
+ | 加算 | age + 1 | 年齢に 1 を足す。 |
- | 減算 / 符号反転 | age - 5 , -age | 年齢から 5 引く |
* | 乗算 | age * 365 | 年齢を 日数換算(ざっくり)。 |
/ | 除算 | age / 10 | 年齢を 10 で割る。 |
・SQLの実行
1. +
(加算)
来年の年齢を表示してください。
SELECT user_id, age, age + 1 AS next_age FROM users;
▼出力結果

2. -
(減算)
去年の年齢を表示してください。
SELECT user_id, age, age - 1 AS last_age FROM users;
▼出力結果

3. *
(乗算)
年齢×365(日数換算)を表示してください。
SELECT user_id, age, age * 365 AS age_days FROM users
▼出力結果

4. /
(除算)
年齢を10,0で割った値を小数で表示してください。
SELECT user_id, age, age / 10.0 AS age_div10 -- 26 → 2.6 FROM users;
▼出力結果

最後に
今回はSQLの「比較・論理・算術演算子」の使い方を学びました。
より複雑な条件でデータを絞り込んだり、集計したりできるようになり、SQLでできることの幅がぐっと広がったと思います。
SQLでできることを増やしていき、一つずつ着実に身につけていきましょう!
コメント