Day 1 - 本日のサマリー: データを「読む」一日
概要
- 日程: Day 1
- 本日のゴール: postgresql-sandboxに自力で接続し、SELECT文・WHERE句・集約関数を組み合わせて、ビジネス上のシンプルな問い(例:「営業部の従業員一覧」「部署別の平均給与」)にSQLで答えられる
- 対応する到達目標: No.1(RDBの基本概念)、No.2(環境構築と基本操作)、No.3(SELECT文によるデータ取得)
- 本日の成果物: postgresql-sandboxが手元で起動・接続できている状態 + SELECT/WHERE/集約を組み合わせた自作SQLクエリ集(10本程度)
🧭 今日の航海図(なぜ・なにを・どこへ)
今日は、明日「データを変える・つなぐ・設計する」ために必要な「読む力」を一気に身につけます。データベースという入れ物がどんな構造をしていて、psqlでどう話しかけ、SELECT/WHERE/GROUP BYでどんな問いに答えられるか——この3点を体に通すのが今日の目的です。順序は「全体像(DBとは)→ 環境を動かす → 概念整理 → SELECTを書く → 条件指定 → 集計」と、必ず手を動かす実習を挟みながら進みます。今日が終わる頃には、「営業部の社員を給与順で出して」と言われたら数十秒でSQLが書ける状態になります。
⏱ 今日の流れ
| 時間 | セッション | 形式 | このセッションで手に入るもの |
|---|---|---|---|
| 9:00-9:30 | S01 オリエンテーション&DBとは | 座学 | 2日間の地図と「AIと学ぶ」スタイルの共有 |
| 9:30-10:15 | S02 PostgreSQL環境構築 | 実習 | 「動いた!」体験:sandboxが起動し、psqlでつながった状態 |
| 10:15-10:25 | 休憩 | ||
| 10:25-10:55 | S03 RDBの基本概念 | 座学 | テーブル・主キー・外部キーの言葉で会話できる |
| 10:55-11:40 | S04 psqlでデータを覗く | 実習 | 7テーブルの構造とサンプルデータが頭に入った状態 |
| 11:40-12:00 | S05 データ型の基礎 | 座学 | 数値/文字列/日付/論理の使い分け基準 |
| 12:00-13:00 | 昼休憩 | ||
| 13:00-13:30 | S06 SELECT文の基本 | 座学 | 射影(列選び)と選択(行選び)の対比 |
| 13:30-14:15 | S07 SELECT・WHERE演習 | 実習 | 5本の単一条件SELECTを自分の手で書いた経験 |
| 14:15-14:25 | 休憩 | ||
| 14:25-14:55 | S08 並び替えとパターン検索 | 座学 | ORDER BY / LIKE / IN / BETWEENの使い分け |
| 14:55-15:40 | S09 複合条件クエリ演習 | 実習 | AND/ORを組み合わせた実践クエリ5本 |
| 15:40-15:50 | 休憩 | ||
| 15:50-16:20 | S10 集約関数とGROUP BY/HAVING | 座学 | 「行をまとめる」発想と集計の文法 |
| 16:20-17:00 | S11 集計演習&Day1まとめ | 実習 | 部署別平均給与・カテゴリ別商品数・月別注文件数を自作 |
午前は「環境を動かす+構造を掴む」、午後は「読みのスキルを段階的に積み上げる」リズムです。30分の座学→必ず手を動かす実習、というセットが繰り返されるので、座学で分からなかった部分も次の実習で必ず触れます。
🎯 今日の成果物
夕方には、以下が手元にある状態を目指します。
- 自分のPCでpostgresql-sandboxが起動し、
docker exec -it postgres-sandbox psql -U postgres -d sandboxでいつでも接続できる - psqlのメタコマンド(
\dt\d\l\q)を見ずに使える - 自分で書いた10本程度のSELECTクエリ(単一条件、複合条件、集計を含む)
- 例:以下のような「営業部社員を給与降順」のクエリが、サンドボックスで動く状態
SELECT first_name, last_name, salary
FROM employees
WHERE department_id = 1
ORDER BY salary DESC;
「クエリが動いた」という小さな成功体験を1日で20回くらい積み重ねるのが、今日の本当のゴールです。
⚠️ 今日のつまずきポイント
今日特に多くの人が引っかかる場所を、予告として挙げておきます。詰まっても普通なので、安心してください。
- 文字列の囲み方:SQLは
'シングルクォート'が正解。プログラミング言語のクセでダブルクォートを使うとエラーになります(S06, S07) - NULL の比較:
WHERE name = NULLは動かない。IS NULLを使う(S06で予告/Day2で詳細) - GROUP BYと SELECT列のルール:「グループ化していない列はSELECTに書けない」エラーは集計時の鉄板ハマりポイント(S10, S11)
- AND/ORの優先順位:ANDがORより強い。迷ったら必ず括弧で囲む(S09)
- 環境構築でDocker Desktop未起動:クジラアイコンが常駐しているか最初に確認(S02)
どれもAIに「こういうエラーが出た、自分はこう書いた」と仮説を添えて聞けば、ほぼ5分で解決します。
🤖 今日のAIの使いどころ
今日大事にしたいのは「まず自分で書く → 詰まったところだけ聞く」の順序です。最初からAIに丸投げすると、研修後に何も残りません。具体的な聞き方の例:
- 「
ERROR: column "salary" does not existと出た。自分は SELECT salary FROM employees と書いた。何が間違い?」 - 「
'山田'で検索しても0件だった。テーブルには『山田』があるはず。何を確認すれば良い?」 - 「
GROUP BYをどう書けばいいか分からない。『部署別の平均給与』を出したい。考え方を教えて(コードは最後)」
「コードは最後」「自分の仮説を先に書く」——この2つだけ守れば、AIは最強の学習パートナーになります。