更新日:2026/08/07
前回の記事では、SQLの概要とSQL初級編として、最も利用頻度の高いSELECT文について解説しました。今回は中級編として、SELECT文をより実践的に活用する方法を紹介します。
SELECT文では、参照列リストに指定した列に対してSQL関数を使用できます。
SQL関数には、文字列関数、算術関数、日付関数、型変換関数などがあります。
SQL関数の中にはRDBソフトウェアごとに独自のものもあるため、利用できる関数はRDBソフトウェアによって異なります。詳細については、ご利用のRDBソフトウェアのマニュアルをご確認ください。
一方で、多くのRDBソフトウェアで共通して利用できるSQL関数として、次のような集計関数があります。
| 集計関数 | 説明 |
|---|---|
| SUM(列名) | 数値列の合計を計算する |
| AVG(列名) | 数値列の平均を計算する |
| COUNT(列名または*) | データの件数をカウントする |
| MAX(列名) | 列の最大値を取得する |
| MIN(列名) | 列の最小値を取得する |
FROM句で指定した表のうち、WHERE句で指定した検索条件に一致するすべての行を対象として、集計関数の結果が返されます。
特定の列ごとに集計を行うには、集計関数とあわせてGROUP BY句を使用します。
GROUP BY句で指定した列ごとにデータをグループ化し、それぞれのグループに対して集計を行います。
参照列リストにキー列を指定することは必須ではありませんが、どのグループの集計結果なのかを分かりやすくするため、指定することが一般的です。
ORDER BY句も必須ではありませんが、同様にキー列の値を把握しやすいように指定することが多いです。
SQL初級編では取り上げなかったSQLのキーワードについて、いくつか紹介します。
指定した列の値が、指定した範囲内にある行を抽出する演算子です。
「以上」と「以下」の2つの条件を1つの演算子で簡潔に記述できます。
指定した列の値が、複数の値のいずれかに一致する行を抽出する演算子です。
「OR」演算子で複数の条件を指定した場合と同じ意味になります。
指定した列の値(文字列)に対して、あいまい検索を行う演算子です。
「%(パーセント)」や「_(アンダースコア)」などのワイルドカードと組み合わせて使用し、特定のパターンに一致するデータを抽出します。
また、ワイルドカードを検索したい文字列の前後に付けることで、前方一致・後方一致・部分一致などの検索ができます。
SQLやRDBにおける「NULL」とは、「値が存在しない」「値が不明である」「値を適用できない」といった状態を表す特殊な値です。
NULLは通常の値とは異なるため、「=」や「<>」では比較できません。NULLかどうかを判定する場合は、「IS NULL」または「IS NOT NULL」を使用します。
SQL初級編では、WHERE句を使用して表の結合条件を記述する方法を説明しました。
表の結合条件は、WHERE句ではなくJOIN句を使用して記述することもできます。
JOIN句を積極的に使用する考え方としては、主に以下のようなケースがあります。
まとめの前に、補足的な説明を追加します。
ここまでのSQL中級編の内容で、実用的なSELECT文で使用される機能のおおよそ半分を扱うことができたかと思います。
SELECT文は単純にデータを取得するための命令文ですが、検索条件の指定方法やデータの結合、集計など、目的に応じてさまざまな活用方法があります。
基本的な構文を理解することで、より効率的で柔軟なデータ検索が可能になります。