SQLでデータベースに問い合わせるとき、必ずといっていいほど出てくる記号やキーワードがあります。
たとえば、こんな感じです:
SELECT * FROM users WHERE age >= 20;
ここで使われている「>=」は、SQLにおける「演算子(operator)」と呼ばれるものです。
演算子とは、値を比較したり、計算したり、条件を組み合わせたりするための記号やキーワードのことです。
この記事では、SQLでよく使われる演算子の種類と使い方を、初心者にも分かりやすく一覧形式+具体例で解説します!
演算子とは?SQLでの役割と種類

演算子とは?
演算子(operator)とは、SQLで「条件式」「計算式」「論理式」などを作るための記号やキーワードのことです。
WHERE句やSELECT句の中で頻繁に登場します。
主な演算子の種類
| 演算子カテゴリ | 主な内容 | 用途 | 
|---|---|---|
| 比較演算子 | =, !=, <, >, <=, >= | 値の大小や一致を比較 | 
| 算術演算子 | +, -, *, /, % | 数値の計算 | 
| 論理演算子 | AND, OR, NOT | 条件の組み合わせ | 
| 特殊演算子 | IN, BETWEEN, LIKE, IS NULL | 複雑な条件指定 | 
なぜ演算子が必要なの?
例: ユーザーテーブルから「20歳以上」のユーザーを探したい場合
演算子なし(不可能):
SELECT * FROM users WHERE age 20以上;  -- これはエラー
演算子あり(正しい):
SELECT * FROM users WHERE age >= 20;  -- これが正解
ポイント: 演算子は「条件を指定するための言葉」です。分類ごとに意味を覚えるとスムーズに理解できます。
比較演算子|WHERE句の中心になる演算子

主な比較演算子と意味
| 演算子 | 意味 | 例 | 説明 | 
|---|---|---|---|
= | 等しい | age = 30 | 年齢が30歳ちょうど | 
!= または <> | 等しくない | name != 'John' | 名前がJohnではない | 
> | より大きい | salary > 50000 | 給料が5万円より多い | 
< | より小さい | score < 80 | スコアが80点未満 | 
>= | 以上 | points >= 10 | ポイントが10以上 | 
<= | 以下 | rank <= 5 | ランクが5位以下 | 
実用的な使用例
例① 条件に合う従業員を検索:
SELECT name, salary FROM employees WHERE salary >= 60000;
結果: 給料が6万円以上の従業員の名前と給料を取得
例② 特定の年齢の顧客を除外:
SELECT * FROM customers WHERE age != 25;
結果: 25歳以外の顧客をすべて取得
例③ 評価点数による絞り込み:
SELECT product_name, rating FROM products WHERE rating > 4.0;
結果: 評価が4.0点より高い商品を取得
文字列の比較もできる
SELECT * FROM users WHERE name = 'Alice';
SELECT * FROM products WHERE category != 'Electronics';
注意: 文字列は必ずシングルクォート(’)で囲みます。
ポイント: 比較演算子は数値や文字列を基準にデータを絞るときに必須の演算子です。
算術演算子|SELECTで数値計算もできる!
主な算術演算子と使い方
| 演算子 | 意味 | 例 | 説明 | 
|---|---|---|---|
+ | 加算 | price + tax | 価格に税金を足す | 
- | 減算 | stock - sold | 在庫から売上を引く | 
* | 乗算 | unit_price * quantity | 単価×数量 | 
/ | 除算 | total / count | 合計を個数で割る | 
% | 剰余(余り) | value % 2 | 2で割った余り(偶奇判定など) | 
実用的な使用例
例① 税込み価格を計算:
SELECT 
    product_name, 
    price, 
    price * 1.1 AS price_with_tax 
FROM products;
結果: 商品名、税抜き価格、税込み価格(10%増し)を表示
例② 平均値を計算:
SELECT 
    student_name,
    (math_score + english_score + science_score) / 3 AS average_score
FROM test_results;
結果: 生徒名と3科目の平均点を表示
例③ 売上金額を計算:
SELECT 
    order_id,
    quantity * unit_price AS total_amount
FROM order_details;
結果: 注文IDと売上金額(数量×単価)を表示
計算の優先順位
SELECT 10 + 5 * 2;  -- 結果:20(5*2=10, 10+10=20)
SELECT (10 + 5) * 2; -- 結果:30(10+5=15, 15*2=30)
ポイント: かっこ()を使って計算順序を明確にしましょう。
重要: SELECT句内で計算できるのがSQLの強み!演算子で手軽に数値処理ができます。
論理演算子|AND/OR/NOTで複雑な条件も自由自在

主な論理演算子
| 演算子 | 意味 | 例 | 説明 | 
|---|---|---|---|
AND | すべての条件が真 | age >= 20 AND gender = 'F' | 20歳以上かつ女性 | 
OR | いずれかの条件が真 | status = 'active' OR status = 'pending' | アクティブまたは保留中 | 
NOT | 条件の否定 | NOT (age < 18) | 18歳未満ではない | 
実用的な使用例
例① 年齢範囲での絞り込み:
SELECT * FROM users WHERE age >= 18 AND age <= 25;
結果: 18歳以上25歳以下のユーザーを抽出
例② 複数のステータスで検索:
SELECT * FROM orders WHERE status = 'shipped' OR status = 'delivered';
結果: 発送済みまたは配達済みの注文を取得
例③ 特定条件を除外:
SELECT * FROM products WHERE NOT (price > 1000 AND category = 'toy');
結果: 「1000円より高いおもちゃ」以外の商品を取得
複雑な条件の組み合わせ
SELECT * FROM employees 
WHERE (department = 'Sales' OR department = 'Marketing') 
  AND salary >= 50000 
  AND age < 40;
結果: 営業部または市場部で、給料5万円以上、40歳未満の従業員
論理演算子の優先順位
- NOT(最優先)
 - AND
 - OR(最後)
 
例:
-- これは「NOT age < 18」AND「gender = 'F'」として解釈される
SELECT * FROM users WHERE NOT age < 18 AND gender = 'F';
-- かっこを使って明確にする
SELECT * FROM users WHERE NOT (age < 18 AND gender = 'F');
ポイント: 論理演算子を使えば、条件を柔軟に組み合わせて検索の幅が広がります。
その他の便利な演算子(IN、BETWEEN、LIKEなど)

IN演算子:複数の値に一致するかチェック
基本構文:
SELECT * FROM table_name WHERE column_name IN (値1, 値2, 値3);
使用例:
SELECT * FROM users WHERE country IN ('Japan', 'USA', 'Canada');
結果: 日本、アメリカ、カナダのいずれかの国のユーザーを取得
NOT INも使える:
SELECT * FROM products WHERE category NOT IN ('Electronics', 'Books');
結果: 電子機器と書籍以外のカテゴリの商品を取得
BETWEEN演算子:範囲指定
基本構文:
SELECT * FROM table_name WHERE column_name BETWEEN 開始値 AND 終了値;
使用例:
SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
結果: 2024年の注文をすべて取得
数値での範囲指定:
SELECT * FROM products WHERE price BETWEEN 1000 AND 5000;
結果: 価格が1000円から5000円までの商品を取得
LIKE演算子:パターン検索(ワイルドカード)
主なワイルドカード:
| ワイルドカード | 意味 | 例 | 
|---|---|---|
% | 任意の文字列(0文字以上) | 'Apple%'→Appleで始まる | 
_ | 任意の1文字 | 'A_e'→Aとeの間に1文字 | 
使用例:
前方一致検索:
SELECT * FROM products WHERE name LIKE 'Apple%';
結果: 「Apple iPhone」「Apple Watch」など、Appleで始まる商品名
後方一致検索:
SELECT * FROM files WHERE filename LIKE '%.pdf';
結果: 拡張子が.pdfのファイル
部分一致検索:
SELECT * FROM users WHERE email LIKE '%@gmail.com';
結果: Gmailアドレスのユーザー
任意の1文字:
SELECT * FROM codes WHERE code LIKE 'A_C';
結果: 「ABC」「AXC」「A1C」など、AとCの間に1文字あるコード
IS NULL / IS NOT NULL:NULL値の判定
NULL値とは: データベースで「値が存在しない」ことを表す特別な値
使用例:
NULLの検索:
SELECT * FROM users WHERE email IS NULL;
結果: メールアドレスが未登録のユーザーを取得
NULLではないデータの検索:
SELECT * FROM orders WHERE delivery_date IS NOT NULL;
結果: 配達日が設定されている注文を取得
重要な注意点:
-- ❌ 間違い:NULLは = や != で比較できない
SELECT * FROM users WHERE email = NULL;  -- これは動かない
-- ✅ 正しい:IS NULL または IS NOT NULL を使う
SELECT * FROM users WHERE email IS NULL;  -- これが正解
EXISTS演算子:サブクエリの存在チェック
使用例:
SELECT * FROM customers c
WHERE EXISTS (
    SELECT 1 FROM orders o 
    WHERE o.customer_id = c.customer_id
);
結果: 注文履歴があるお客様だけを取得
ポイント: これらの特殊演算子を知っていると、複雑な検索が短く・分かりやすく書けます!
演算子の優先順位と組み合わせのコツ

演算子の優先順位(高い順)
- 算術演算子:
*,/,% - 算術演算子:
+,- - 比較演算子:
=,!=,<,>,<=,>=,LIKE,IN,BETWEEN - 論理演算子:
NOT - 論理演算子:
AND - 論理演算子:
OR 
実践的な組み合わせ例
複雑な条件を整理して書く:
SELECT * FROM products 
WHERE (category = 'Electronics' OR category = 'Computers')
  AND price BETWEEN 10000 AND 50000
  AND name NOT LIKE '%used%'
  AND stock > 0;
解説:
- エレクトロニクスまたはコンピューター
 - 価格が1万円から5万円
 - 商品名に「used」が含まれない
 - 在庫がある
 
可読性を高めるコツ
改行とインデントを活用:
SELECT 
    product_id,
    name,
    price * 1.1 AS price_with_tax
FROM products 
WHERE category IN ('Electronics', 'Computers', 'Phones')
  AND price >= 5000
  AND (
      brand = 'Apple' 
      OR brand = 'Samsung'
      OR brand = 'Sony'
  )
ORDER BY price DESC;
よくある間違いと対処法
間違い① NULLの比較
-- ❌ 間違い
SELECT * FROM users WHERE age = NULL;
-- ✅ 正しい
SELECT * FROM users WHERE age IS NULL;
間違い② 文字列のクォート忘れ
-- ❌ 間違い
SELECT * FROM users WHERE name = Alice;
-- ✅ 正しい
SELECT * FROM users WHERE name = 'Alice';
間違い③ 論理演算子の優先順位
-- ❌ 意図しない結果
SELECT * FROM users WHERE age > 18 OR age < 65 AND gender = 'F';
-- これは「age > 18」OR「(age < 65 AND gender = 'F')」として解釈される
-- ✅ 意図を明確にする
SELECT * FROM users WHERE (age > 18 OR age < 65) AND gender = 'F';
間違い④ LIKEでのワイルドカード忘れ
-- ❌ 完全一致になってしまう
SELECT * FROM products WHERE name LIKE 'Apple';
-- ✅ 部分一致
SELECT * FROM products WHERE name LIKE '%Apple%';
実践練習問題
練習問題1:基本的な検索
以下の条件でユーザーを検索するSQL文を書いてください:
- 年齢が25歳以上35歳以下
 - 性別が女性(’F’)
 - メールアドレスが登録されている
 
解答例:
SELECT * FROM users 
WHERE age BETWEEN 25 AND 35 
  AND gender = 'F' 
  AND email IS NOT NULL;
練習問題2:計算を含む検索
商品テーブルから以下を取得してください:
- 商品名、価格、税込み価格(消費税10%)
 - 価格が1000円以上の商品のみ
 - 税込み価格の高い順に並び替え
 
解答例:
SELECT 
    name,
    price,
    price * 1.1 AS price_with_tax
FROM products 
WHERE price >= 1000
ORDER BY price * 1.1 DESC;
まとめ:SQLの演算子を使いこなして、自由自在なデータ操作を!
今回学んだ演算子の種類:
- 比較演算子:データの大小や一致を判定
 - 算術演算子:数値計算で新しい値を作成
 - 論理演算子:複数の条件を組み合わせ
 - 特殊演算子:複雑な条件を簡潔に表現
 
実際に使ってみよう:
- 簡単な比較から始めてみる(=, >, < など)
 - AND, ORで条件を組み合わせる
 - IN, LIKEで効率的な検索を体験
 - 算術演算子で計算結果を表示
 
  
  
  
  
              
              
              
              
              

コメント