SQL(Structured Query Language)は、データベース管理システムにおいて、データの操作や管理を行うための言語です。データベース内の情報を操作する際に、最も重要な要素の一つが「データの取得」です。このプロセスは、基本的に「SELECT」文を使用して行いますが、その使用方法は非常に多岐にわたります。本記事では、SQLでのデータの取得方法に関する完全かつ包括的なガイドを提供します。
1. 基本的なSELECT文の構造
SQLの基本的なクエリは、データベース内から特定のデータを取得するための「SELECT」文です。最も基本的な構文は以下の通りです。

sqlSELECT 列名 FROM テーブル名;
-
SELECT: 取得したいデータの列を指定します。
-
FROM: データを取得するテーブルを指定します。
例えば、employees
というテーブルからname
とage
のデータを取得する場合、次のように書きます。
sqlSELECT name, age FROM employees;
これで、employees
テーブルの全てのname
とage
のデータが返されます。
2. WHERE句による条件指定
データを取得する際に、特定の条件を満たすデータのみを抽出したい場合、WHERE
句を使用します。WHERE
句は、指定した条件に一致するデータだけを返します。
sqlSELECT 列名 FROM テーブル名 WHERE 条件;
例えば、employees
テーブルから年齢が30歳以上の従業員を取得したい場合、次のように書きます。
sqlSELECT name, age FROM employees WHERE age >= 30;
ここでは、age
が30以上の従業員のname
とage
が返されます。
3. ORDER BY句による並べ替え
取得したデータを特定の順番で並べ替えたい場合は、ORDER BY
句を使用します。デフォルトでは昇順(ASC)で並べ替えられますが、降順(DESC)で並べ替えることも可能です。
sqlSELECT 列名 FROM テーブル名 ORDER BY 列名 [ASC|DESC];
例えば、employees
テーブルから年齢順に従業員を並べ替える場合、次のように書きます。
sqlSELECT name, age FROM employees ORDER BY age DESC;
これにより、age
の値が大きい順に従業員の名前と年齢が表示されます。
4. LIMIT句による取得件数の制限
データベースから大量のデータを取得する場合、必要な件数だけを取得したいことがあります。LIMIT
句を使用することで、取得するレコード数を制限できます。
sqlSELECT 列名 FROM テーブル名 LIMIT 数;
例えば、employees
テーブルから最初の10人の従業員を取得する場合、次のように書きます。
sqlSELECT name, age FROM employees LIMIT 10;
5. AND、ORによる複数条件の指定
複数の条件を組み合わせてデータを取得したい場合、AND
やOR
を使って条件を組み合わせることができます。
-
AND
: 両方の条件が真である場合に結果を返します。 -
OR
: いずれかの条件が真である場合に結果を返します。
例えば、年齢が30歳以上で、かつ、部門が「営業」である従業員を取得する場合、次のように書きます。
sqlSELECT name, age, department FROM employees WHERE age >= 30 AND department = 'Sales';
逆に、年齢が30歳以上または部門が「営業」の従業員を取得したい場合は、次のように書きます。
sqlSELECT name, age, department FROM employees WHERE age >= 30 OR department = 'Sales';
6. LIKE演算子による部分一致検索
文字列の部分一致検索を行いたい場合、LIKE
演算子を使用します。%
を使って部分一致を指定します。
sqlSELECT 列名 FROM テーブル名 WHERE 列名 LIKE 'パターン';
例えば、名前に「佐藤」を含む従業員を取得する場合、次のように書きます。
sqlSELECT name FROM employees WHERE name LIKE '%佐藤%';
これにより、名前に「佐藤」を含む全ての従業員が取得されます。
7. IN演算子による複数の値の指定
複数の値に一致するデータを取得したい場合、IN
演算子を使用します。これにより、特定の値のリストに一致するデータを取得できます。
sqlSELECT 列名 FROM テーブル名 WHERE 列名 IN (値1, 値2, 値3, ...);
例えば、部門が「営業」または「人事」の従業員を取得する場合、次のように書きます。
sqlSELECT name, department FROM employees WHERE department IN ('Sales', 'HR');
8. BETWEEN演算子による範囲指定
数値や日付の範囲内にあるデータを取得する場合、BETWEEN
演算子を使用します。
sqlSELECT 列名 FROM テーブル名 WHERE 列名 BETWEEN 範囲開始値 AND 範囲終了値;
例えば、年齢が30歳から40歳の従業員を取得する場合、次のように書きます。
sqlSELECT name, age FROM employees WHERE age BETWEEN 30 AND 40;
9. 集約関数
SQLでは、データの集計を行うためにいくつかの集約関数が用意されています。代表的な集約関数には以下のものがあります。
-
COUNT()
: レコードの数を返す。 -
SUM()
: 数値の合計を返す。 -
AVG()
: 数値の平均を返す。 -
MIN()
: 最小値を返す。 -
MAX()
: 最大値を返す。
例えば、employees
テーブルにおける従業員数を取得する場合は次のように書きます。
sqlSELECT COUNT(*) FROM employees;
また、部門ごとの平均年齢を取得する場合は、次のように書きます。
sqlSELECT department, AVG(age) FROM employees GROUP BY department;
10. GROUP BY句によるグルーピング
集約関数を使用する場合、通常はGROUP BY
句を使用してデータをグルーピングします。GROUP BY
は、指定した列に基づいてデータをグループ化します。
例えば、部門ごとの従業員数を取得する場合、次のように書きます。
sqlSELECT department, COUNT(*) FROM employees GROUP BY department;
11. HAVING句によるグループ条件の指定
GROUP BY
でデータをグルーピングした後、特定の条件を満たすグループのみを取得したい場合、HAVING
句を使用します。WHERE
句と異なり、HAVING
句はグループ化されたデータに対して条件を指定します。
例えば、従業員数が10人以上の部門を取得する場合は次のように書きます。
sqlSELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) >= 10;
まとめ
SQLのSELECT
文は、データベースから情報を取得するための基本的なツールです。WHERE句、ORDER BY句、GROUP BY句、集約関数、そして条件指定の方法を適切に組み合わせることで、非常に強力なデータ取得が可能となります。実際の使用では、これらの基本的な文法を理解し、組み合わせて効率的なデータ操作を行うことが求められます。