【SQL】よく使うSQL SELECT文の基本の基本
データ分析を行う上で、SQLは不可欠なツールの一つです。ITエンジニアではなくても、業務で日常的にSQLを使ってデータベースから情報を引き出す場面は多いのではないでしょうか。この記事では、MySQLを使った基本的なSQL SELECT文の使い方を解説し、よくある実務のシチュエーションに応じたSQLの具体例を紹介します。
この記事の目次
SELECT文の基本
1.基本形
まずは、SQLの中でも一番よく使うSELECT文の基本から解説します。SELECT文は、データベースから特定の情報を引き出すための命令文です。たとえば、顧客情報のテーブルから全ての情報を取り出すには以下のように書きます。
SELECT * FROM customers;
このクエリでは、テーブル名 “customers” から全ての列のデータを取得しています。
*
はすべての列を意味しています。
customers テーブル
結果
2.特定の列だけを取り出す
データが多い場合、必要な列だけを抽出したいことがよくあります。以下のクエリでは、顧客の名前とメールアドレスだけを取り出します。
SELECT name, email FROM customers;
customers テーブル
結果
3. 条件を使ってデータを絞り込む
データベースから必要なデータだけを取得するには、WHERE
句を使います。例えば、特定の地域に住む顧客情報を取得したい場合は以下のようにします。
SELECT name, email FROM customers WHERE region = 'Kanto';
customers テーブル
結果
4. 条件を組み合わせる (AND と OR)
複数の条件を組み合わせてデータを絞り込む場合、ANDやORを使用します。
- ANDの例
複数の条件を全て満たす行を取得します。
SELECT name, email FROM customers WHERE region = 'Kanto' AND name = 'yamada';
customers テーブル
結果
- ORの例
いずれかの条件を満たす行を取得します。
SELECT name, email FROM customers WHERE region = 'Kanto' OR name = 'tanaka';
customers テーブル
結果
5. 並び替えを行う
結果を特定の順序で並び替えるには、ORDER BY
を使います。例えば、顧客の名前をアルファベット順に並べたい場合、以下のクエリを使用します。
SELECT name, email FROM customers ORDER BY name ASC;
customers テーブル
結果
6. 集計関数とグループ化
データを集計する場合、COUNT, SUM, AVGなどの集計関数とGROUP BY句を活用します。
- GROUP BY
GROUP BY句を使用することで、データを特定の列でグループ化し、そのグループごとに集計することができます。
例えば、各地域ごとの顧客数を集計したいときは次のようにします。
SELECT region, COUNT(*) AS customer_count FROM customers GROUP BY region;
customers テーブル
結果
- HAVING
HAVING句を使用すると、グループ化した結果に対して条件を指定することができます。
HAVING句は、WHERE句と異なり、グループ化された結果に対して条件を適用する点が特徴です。
SELECT region, COUNT(*) AS customer_count FROM customers GROUP BY region HAVING customer_count > 1;
customers テーブル
結果
7. テーブル結合の例
複数のテーブルからデータを取得する場合、JOIN
を使用します。例えば、顧客情報とその注文情報を結合して取得するには以下のようにします。
SELECT customers.name, orders.order_date, orders.amount
FROM customers
JOIN orders ON customers.id = orders.customer_id;
customers テーブル
orders テーブル
結果
8. よくある実務で使いそうな例
- 期間の抽出
定の期間内の売上を取り出す際に、WHERE句で日付を条件に加えます。
BETWEEN演算子を使用することで、開始日と終了日の間にあるデータを取得します。
SELECT * FROM sales WHERE sale_date BETWEEN '2024-01-01' AND '2024-01-31';
sales テーブル
結果
- 重複しないデータを取得する
顧客の地域をリストアップしたい場合、重複を避けて取得したいことがあります。この場合、DISTINCTを使います。
SELECT DISTINCT region FROM customers;
customers テーブル
結果
- 部分一致
LIKEを使うことで、前方一致、後方一致、部分一致の検索が可能です。
- 前方一致:
'A%'
のように指定することで、’A’で始まるすべての値を取得します。 - 後方一致:
'%A'
のように指定すると、’A’で終わるすべての値を取得します。 - 部分一致:
'%A%'
のように指定することで、’A’を含むすべての値を取得します。
- 前方一致:
例えば、名前が’A’で始まる顧客を取得したい場合は次のようにします。
SELECT * FROM customers WHERE name LIKE 'A%';
9. NULL値の取り扱い
SQLのクエリでは、データベースに存在するNULL値の取り扱いに注意が必要です。NULLは「値がない」ことを意味し、特別な取り扱いが必要です。
- NULLのデータを取得する
データベースにあるNULL値のデータを取得するには、IS NULL
を使います。
SELECT * FROM customers WHERE email IS NULL;
- NULLではないデータを取得する
NULLではないデータを取得したい場合は、IS NOT NULL
を使います。
SELECT * FROM customers WHERE email IS NOT NULL;
まとめ
SQLのSELECT文は、データベースから必要な情報を引き出すための基本中の基本です。本記事で紹介した基本的な構文を押さえて、日常業務でのデータ分析で活用してみてください。慣れてきたら、条件の絞り込みや集計など、さらに複雑なクエリに挑戦してみましょう!
カテゴリー: