IT/開発ガイド 25 min read

SQL基礎:データベースから必要な情報だけを抽出するクエリ文ガイド

Author

データ分析エディター

12月31日 発行

複雑なデータグリッドとコード画面

データが資産となる時代です。企業は毎日膨大なデータを生成し、私たちはその中から意味のある洞察を得るために奮闘しています。この膨大なデータの海の中から、必要な情報だけを正確に釣り上げることができる道具、それが SQL (Structured Query Language) です。

SQLは複雑なプログラミング言語というよりも、データベースと対話する言語に近いです。「ユーザーテーブルから東京に住んでいる20代の会員のメールアドレスだけを表示して」とリクエストすれば、SQLはすぐにその結果を返してくれます。今日は、SQLの最も基本的かつ強力な機能である 「データ抽出」 のすべてを深く掘り下げていきます。

1. SQLの心臓:SELECTとFROM

すべてのデータ抽出の始まりは SELECT と FROM です。この2つの単語は、「何を (SELECT)」「どこから (FROM)」持ってくるかを決定します。

例えば、会社の全従業員リストが含まれた employees テーブルがあるとしましょう。全従業員の情報を見たい時は、 ワイルドカード (*) を使用します。

SELECT * FROM employees;

しかし、実務ですべての情報を一度に呼び出すのは非常に非効率です。数百万人のデータがある場合、システムに過負荷をかける可能性があります。そのため、必要な 列 (カラム) だけを指定して呼び出す習慣をつけるべきです。 特定の項目だけを選択して照会すること が最適化の第一歩です。

SELECT first_name, last_name, email FROM employees;

上記のコードは、姓と名、そしてメールアドレスだけを抽出します。非常にすっきりしており、速度も速いです。 公式ドキュメント によれば、このような明示的な宣言は、クエリの可読性とパフォーマンスを同時に高めるとされています。関連する詳細な文法は、 W3Schools SQL Tutorial でさらに詳しく確認できます。

データ分析ダッシュボードグラフィック

2. 必要な条件だけでフィルタリング:WHERE句

単に列を選ぶだけでなく、特定の条件を満たす 行 (レコード) だけを抽出したい時に使用するのが WHERE 句です。 WHERE 句はSQLの花形とも呼ばれ、データフィルタリングにおいて最も核心的な役割を果たします。

基本比較演算子の活用

最も基本的なフィルタリングは、数値や文字列を直接比較することです。 比較演算子 を使用してデータを精巧に絞り込むことができます。

  • =
    等しい: 特定の値と正確に一致するデータを探します。(例:WHERE department = 'Sales')
  • != または <>
    等しくない: 特定の値を除いた残りのデータを照会します。
  • >, <, >=, <=
    大小比較: 数値や日付の範囲を指定する時に使用します。(例:WHERE salary > 50000)
「条件を適切に設定できるクエリ作成者は、データベースの負荷を減らし、組織の迅速な意思決定を支援します。」

3. 複合条件の完成:AND, OR, NOT

現実のビジネスの質問はそれほど単純ではありません。「東京に住んでいて(条件1)、昨年3回以上購入した(条件2)、VIP会員(条件3)」を探す必要がある場合が多いです。この時、 論理演算子 を組み合わせます。

論理演算子の活用法

  • ✅
    AND: すべての条件を同時に満たす必要があります。最も狭い範囲を検索する際に有利です。
  • ➕
    OR: 複数の条件のうち、1つでも満たせば結果を返します。検索範囲を広げる際に使用します。
  • 🚫
    NOT: 特定の条件に該当しないデータだけを抽出します。

複合条件を使用する際は、 括弧 () の使用 が非常に重要です。数学の四則演算のように、SQLにも演算子の優先順位があり、 AND が OR よりも先に計算されます。そのため、意図した通りにフィルタリングするには括弧を適切に配置し、可読性と正確性を確保する必要があります。

4. 文字列パターン探索:LIKEとワイルドカード

正確な値がわからない時、あるいは似たパターンのテキストを探したい時は LIKE 演算子を使用します。これは検索エンジンの検索機能と似た仕組みで動作します。

ワイルドカードの魔法

% (パーセント記号) は文字数に関係なくすべての文字列を意味します。 _ (アンダーバー記号) はちょうど一文字を意味します。

  • 'Sato%': 'Sato'で始まるすべての文字列(Sato, Satou, Sato-sanなど)
  • '%san': 'san'で終わるすべての文字列(Fujisan, Fujisawa-sanなど)
  • '%data%': 'data'という単語を含むすべての文字列
  • 'A_': 'A'で始まるちょうど二文字の文字列

この機能は特に、顧客の住所検索や商品名のキーワード検索などで絶大な威力を発揮します。ただし、 ワイルドカードを文字列の先頭に付ける方式 ('%keyword') はインデックスが効かず、検索速度が著しく低下する可能性があるため、大容量データの処理時には注意が必要です。

サーバーとデータ通信を表現した抽象的イメージ

5. 範囲とリスト検索:BETWEENとIN

可読性の高いクエリを作成することは、チーム開発の基本です。 BETWEEN と IN は、複雑な論理構造をシンプルにしてくれます。

BETWEEN:範囲検索の最適化

特定の期間の売上や、特定の点数範囲の学生を探す時に便利です。

SELECT * FROM orders WHERE order_date BETWEEN '2026-01-01' AND '2026-12-31';

これは order_date >= '2026-01-01' AND order_date <= '2026-12-31' と完全に同じ動作をしますが、遥かに読みやすいです。

IN:複数の値を同時に比較

複数の地域や複数のランクを一度に照会したい時、 OR を多用する代わりに IN を使用してください。

SELECT * FROM customers WHERE city IN ('Tokyo', 'Osaka', 'Nagoya');

コードが簡潔になればミスが減り、他の人がクエリを分析するのも非常に容易になります。

6. 空の情報処理:IS NULL

データベースには情報が欠落している場合が多々あります。これを NULL と呼びます。重要なのは、NULLは0でも空文字 ('') でもないということです。 「値が存在しない状態」そのものを意味します。

そのため、 WHERE column = NULL のような式は動作しません。代わりに IS NULL または IS NOT NULL を使用する必要があります。

SELECT * FROM members WHERE phone_number IS NULL;

連絡先が登録されていない会員を抽出してマーケティング情報の登録を誘導するクエリを作成する際、必須の文法です。 データ品質管理 (Data Quality Management) の観点からも、NULLデータの適切な処理は分析の信頼性を決定づける重要な要素です。

7. データの重複除去と制限:DISTINCTとLIMIT

必要な列を選択した後、結果が膨大すぎたり重複が多い場合は、 DISTINCT と LIMIT を活用してください。

DISTINCT (重複除去)

照会された結果から重複した行を1つだけ残して削除します。自社サービスの顧客が住んでいる「都市の種類」だけを知りたい時に便利です。

LIMIT (結果数の制限)

上位N個のデータだけを取得します。 「最近の加入者5人」や「売上上位10個の商品」を見る時に使用し、不必要なデータ読み込みを防ぎます。

8. 結果の可読性を高めるソート:ORDER BY

データを抽出する最後の段階は、見やすく整列させることです。 ORDER BY はデフォルトで昇順 (ASC) でソートし、必要に応じて降順 (DESC) を指定できます。

SELECT product_name, price FROM products ORDER BY price DESC LIMIT 5;

最も高価な商品5つを順番に表示するクエリです。 ソート基準を複数設定 することもできます。例えば ORDER BY category ASC, price DESC とすれば、カテゴリー別にまとめた後、その中で価格が高い順に表示されます。

最後に:データ分析の言語、SQL

ここまで、データベースから必要な情報を正確に抽出するための基礎クエリ文を見てきました。 SELECT, WHERE, LIKE, BETWEEN, IN, IS NULL そして ORDER BY まで。これらのいくつかの道具に慣れるだけで、企業の膨大なデータの中から宝物のようなインサイトを自ら見つけ出すことができます。

重要なのは、理論を知るだけでなく、実際にクエリを実行してみることです。データベースとの対話は練習すればするほど精巧になり、皆さんの業務生産性を飛躍的に向上させてくれるでしょう。 さらに専門的な技術 に興味がある方は、 MySQL公式ドキュメント を参考に深めてみてください。

FreeImgFix.comと一緒にデータエキスパートを目指しましょう!