【SQL研修#3】比較/論理/算術演算子 未経験・文系向けITエンジニア

ITエンジニア研修

はじめに

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 <> 2020歳ではない行だけを対象にする。
<, <=, >, >=大小比較age >= 2020歳以上の行だけを対象にする。
BETWEEN a AND ba〜bの範囲age BETWEEN 20 AND 2920〜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 TRUE20歳以上 かつ 利用中ユーザーだけを対象にする。
ORまたはage < 18 OR is_active IS FALSE18歳未満 または 利用中でないユーザーのどちらかに当てはまる行を対象にする。
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でできることを増やしていき、一つずつ着実に身につけていきましょう!

コメント