新しいスポーツのルールを覚えるとき、説明文を読むだけの人と、実際にコートに立って体を動かした人。どちらが早く上達すると思いますか?
SQLも同じです。読んで「なるほど」と思うのと、実際に自分の指でタイプして結果が返ってくるのを見るのとでは、身につき方がまったく違います。この講座は、その両方を組み合わせて進めます。
この講座の進め方 ― 読む→打つ、の繰り返し
このSTAGE 01では、データベースやSQLの「考え方」を文章で説明してきました。ここから先のSTAGE 02以降も、まずは記事でその回の構文をやさしく解説します。しかし、それだけでは終わりません。
この講座の進め方は、とてもシンプルです。
- 記事を読んで、その回のSQL構文の意味を理解する
/sql/game/の SQL DIVER を開き、学んだ構文を実際にタイプする- 打ち込んだSQLが正しく動く感覚を、指と目で覚える
「なるほど、と思ったらすぐ打つ」——これを繰り返すことで、SQL文は頭の知識から、指が覚えている技術に変わっていきます。読むだけで終わらせず、必ずゲームで手を動かしてみてください。
練習台となるデータベース「アマテラス」
この講座とSQL DIVERでは、共通の題材として、架空の宇宙ステーション「アマテラス」の管理データベースを使います。乗組員やミッションの情報が、次の3つのテーブルに整理されています。
crew(乗組員テーブル)
| 列名 | 内容 |
|---|---|
| id | 乗組員ID(主キー) |
| name | 名前(ユミ、ケンジなど) |
| role | 役職(エンジニア/パイロット/医師/研究員 など) |
| age | 年齢 |
| home | 出身地(地球/火星/月) |
| salary | 給与 |
planets(惑星テーブル)
| 列名 | 内容 |
|---|---|
| id | 惑星ID(主キー) |
| name | 惑星の名前(火星、金星、タイタンなど) |
| distance | 地球からの距離 |
| population | 人口 |
missions(ミッションテーブル)
| 列名 | 内容 |
|---|---|
| id | ミッションID(主キー) |
| title | ミッション名 |
| crew_id | 担当する乗組員のID |
| planet_id | 目的地の惑星ID |
| reward | 報酬 |
| status | 状態(進行中/完了 など) |
この講座では、主に crew テーブルを使ってSELECT文の基礎を練習していきます。planets や missions は、後のSTAGEでテーブル同士を組み合わせる学習に使う予定です。今の時点では「こういう3つの表があるんだな」という全体像だけつかんでおけば十分です。
SQL DIVERの遊び方の流れ
/sql/game/ の SQL DIVER は、実際にSQL文をタイプして、アマテラスのデータベースから正しく情報を取り出すゲームです。基本的な流れは次の通りです。
- お題(欲しいデータの条件)が画面に表示される
- そのお題に合うSQL文を、自分でキーボードから入力する
- 入力したSQLがそのまま実行され、結果がすぐに表示される
- 正しく取り出せていればクリア、間違っていればもう一度挑戦できる
構文を覚えたては、スペルミスや句の順番の間違いでつまずくこともあると思います。でも、それこそが練習です。間違えて、直して、また打つ——このサイクルの中で、SQLは少しずつあなたの体に染み込んでいきます。
この講座で、記事を読んだ後にやるべきことは何でしょう?
答えを見る
/sql/game/ の SQL DIVER を開いて、学んだ構文を実際にタイプしてみることです。読んで理解したつもりでも、実際に自分の手で打ってみて初めて、本当に身についたかどうかが分かります。
準備は整いました。次のSTAGE 02からは、いよいよSQLの心臓部である SELECT文 に入っていきます。読んだらすぐ、SQL DIVERでアマテラスの crew テーブルに向かってタイプしてみましょう。
アマテラスの3つの表、なんとなくイメージできたかな? 完璧に覚えなくて大丈夫、困ったらこの記事に戻ってくればOK。次はいよいよSELECT文、実際に手を動かしていこう!