SQLの基本 — データベースに「聞く」方法
導入
データベースには膨大なデータが眠っています。そのデータを「取り出したい」「並べ替えたい」「集計したい」と思ったときに使う言葉がSQLです。英語で質問(Query)するようなイメージで操作できます。
なぜ重要か
SQLはITパスポートのテクノロジ系分野で毎回出題される重要テーマです。SELECT文の出力結果を問う問題、WHERE句やGROUP BY句の動作を問う問題、JOIN結果がどうなるかを問う問題など、実際にSQLを追って答える形式が主流で、暗記だけでは対応できません。
実務においても、売上データの集計・顧客情報の抽出・レポート作成など、SQLは業種を問わず活用される基本スキルです。ExcelのVLOOKUPやピボットテーブルに慣れている方にとっても、「WHERE=フィルター」「GROUP BY=ピボット」のように対応させて理解すると習得しやすくなります。この単元を学ぶことで、試験の得点源を確保しながら、データを扱う実践的な素地を身につけることができます。
くわしく知ろう
SQL(Structured Query Language:構造化照会言語)は、リレーショナルデータベースにデータを問い合わせたり、操作したりするための言語です。
データを取得する基本の構文は「SELECT 列名 FROM テーブル名」です。たとえば「SELECT 氏名, 年齢 FROM 社員」と書くと、社員テーブルから氏名と年齢の列を取り出せます。すべての列を取得したい場合は列名の代わりに「*」(アスタリスク)を使います。
条件を絞り込みたい場合はWHERE句を使います。「SELECT * FROM 社員 WHERE 年齢 >= 30」と書くと、年齢が30以上の社員だけが取得できます。結果を並べ替えたい場合はORDER BY句を使い、「ORDER BY 年齢 ASC(昇順)」や「DESC(降順)」と指定します。
GROUP BY句は集計に使い、「SELECT 部署, COUNT(*) FROM 社員 GROUP BY 部署」と書くと部署ごとの人数を集計できます。集計関数にはCOUNT(件数)・SUM(合計)・AVG(平均)・MAX(最大)・MIN(最小)があります。
複数のテーブルを結合するにはJOINを使います。INNER JOINは両方のテーブルに共通するデータだけを取り出し、LEFT JOINは左側のテーブルのデータをすべて保持する結合方式です。句の記述順は「SELECT → FROM → WHERE → GROUP BY → ORDER BY」という順番が基本となっています。
具体例で理解する
たとえば「東京都に住む顧客の氏名と電話番号を、氏名の五十音順に一覧表示したい」場合、SQLでは「SELECT 氏名, 電話番号 FROM 顧客 WHERE 都道府県 = '東京都' ORDER BY 氏名 ASC」と記述します。SELECT・FROM・WHERE・ORDER BYの4つの句を組み合わせるだけで、試験問題の大半に対応できます。また「部署ごとの平均給与を求めたい」なら「SELECT 部署, AVG(給与) FROM 社員 GROUP BY 部署」のようにGROUP BYと集計関数を組み合わせて表現します。
試験での出題パターン
【パターン1:SQL文の実行結果を問う問題】
表データとSELECT文が示され、「このSQL文を実行した結果として正しい表はどれか」という形式です。WHERE句の条件式を1行ずつ評価し、ORDER BY句で並べ替えの方向(ASC/DESC)を確認するという手順を踏むと正確に解けます。
【パターン2:目的に合ったSQL句を選ぶ問題】
「部署ごとの社員数を求めるために使うSQL句の組み合わせはどれか」という問題で、GROUP BY+COUNT、WHERE+ORDER BY、JOINなどの選択肢から選ばせる形式です。「集計=GROUP BY」「件数=COUNT」「絞り込み=WHERE」という対応を頭に入れておくと素早く判断できます。
【パターン3:INNER JOINとLEFT JOINの違いを問う問題】
2つのテーブルを結合した際にどの行が残るかを問う問題が出題されます。INNER JOINは両テーブルに一致する行だけが残り、LEFT JOINは左テーブルの全行が保持されて右テーブルに対応がなければNULLが入るという動作の違いを押さえておきましょう。
よくある間違い・紛らわしいポイント
【WHEREとHAVINGの混同】
WHEREはGROUP BYの前に行を絞り込む句で、集計前のデータに条件をかけます。HAVINGはGROUP BY後のグループに条件をかける句で、「集計結果が〇〇以上のグループだけを表示したい」という場合に使います。「WHERE=集計前、HAVING=集計後」と整理しておきましょう。
【ORDER BYのASCとDESCの向き】
ASCは昇順(小さい→大きい、あ→ん)、DESCは降順(大きい→小さい、ん→あ)です。省略した場合はASC(昇順)が適用されます。試験問題では「氏名の降順に並べた結果はどれか」という問われ方もするので、省略時のデフォルトを忘れないようにしましょう。
【SELECT * とSELECT 列名の違い】
「*」はすべての列を取得しますが、実際の業務では必要な列だけを指定するのが正しい書き方とされています。試験では「SELECT * で取得した場合の出力はどれか」という問いに対して、すべての列が含まれることを意識してください。
まとめ・試験ポイント
- SELECT〜FROM〜で列とテーブルを指定してデータを取得する
- WHERE=条件絞り込み、ORDER BY=並べ替え(ASC昇順/DESC降順、省略時はASC)
- GROUP BY=グループ化、COUNT・SUM・AVG・MAX・MIN=集計関数
- WHERE=集計前の行に条件、HAVING=GROUP BY後のグループに条件(区別が重要)
- INNER JOIN=共通データのみ結合、LEFT JOIN=左テーブルを全件保持
- 試験では「SQLの出力結果」や「WHERE・GROUP BYの動作」を問う出題が多い
学習した内容を試験形式で確認しよう。ITパスポート入門試験100問に挑戦できます。
入門試験100問に挑戦する