📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

Day 2 - 本日のサマリー: データを「変える・つなぐ・設計する」一日

概要

  • 日程: Day 2
  • 本日のゴール: データの追加・更新・削除、結合・サブクエリを使って現実のビジネス課題に答えるSQLを書ける/自分でテーブル設計を一つ完成させる/確認テストで現在の到達度を把握する
  • 対応する到達目標: No.4(INSERT/UPDATE/DELETE)、No.5(JOIN)、No.6(テーブル設計)、No.7(インデックス)、No.8(トランザクション)、No.9(サブクエリ・ビュー)
  • 本日の成果物: 自分で設計・作成したテーブル定義1セット(courses, enrollments)、結合・サブクエリを含む実践クエリ集、確認テスト15問の自己採点結果

🧭 今日の航海図(なぜ・なにを・どこへ)

昨日は「読む」一日でした。今日はその上に「変える(DML)」「つなぐ(JOIN)」「設計する(CREATE TABLE)」を積みます。読みだけでは現場の問いの半分にしか答えられません。たとえば「顧客と注文と商品をつないだ売上分析」「テスト用の社員データを安全に追加・削除」「自部署のための研修管理テーブルを新規設計」——どれもDay2の道具がないと書けません。最後は確認テストで「今の自分が何を答えられて、何でつまずくか」を可視化し、復習で穴を埋めて締めくくります。

⏱ 今日の流れ

時間 セッション 形式 このセッションで手に入るもの
9:00-9:30 S01 INSERT/UPDATE/DELETE 座学 DML 3文の構文と「WHERE忘れ」の怖さ
9:30-10:15 S02 データ操作演習 実習 BEGIN/ROLLBACKで安全にデータを変える体験
10:15-10:25 休憩
10:25-10:55 S03 テーブル結合の基礎 座学 INNER JOINとLEFT JOINの使い分け基準
10:55-11:40 S04 JOIN演習 実習 3テーブル以上をつなぐ結合SQL3本
11:40-12:00 S05 NULL値とCASE式 座学 NULLの扱いとCASE WHENの基本
12:00-13:00 昼休憩
13:00-13:30 S06 NULL・CASE演習 実習 給与ランク分類・NULL代替表示の経験
13:30-14:00 S07 サブクエリとビュー 座学 スカラー/インライン/EXISTSとビューの概念
14:00-14:30 S08 サブクエリ・ビュー演習 実習 「平均より高い社員」のクエリと自作ビュー
14:30-14:40 休憩
14:40-15:10 S09 テーブル設計と制約 座学 5つの制約と命名規則
15:10-15:40 S10 テーブル作成演習 実習 courses, enrollments を自分で設計・作成
15:40-16:00 S11 インデックスとトランザクション 座学 索引のたとえとACIDの全体像
16:00-16:10 休憩
16:10-16:40 S12 確認テスト 演習 全15問の自己採点結果
16:40-17:00 S13 復習&研修まとめ 演習 弱点の言語化と研修後の学習計画

午前は「変える+つなぐ」、午後前半は「条件分岐とサブクエリ」、午後後半は「設計+速さ・安全」、最後の50分が確認テストと復習。盛りだくさんですが、昨日積んだ「読む力」が全てのセッションで土台になります。

🎯 今日の成果物

夕方に手元にある成果物のイメージ:

  • 自分で設計・実装した2テーブル(社員研修管理を例に)
CREATE TABLE courses (
    course_id SERIAL PRIMARY KEY,
    course_name VARCHAR(100) NOT NULL,
    duration_hours INTEGER CHECK (duration_hours > 0)
);

CREATE TABLE enrollments (
    enrollment_id SERIAL PRIMARY KEY,
    employee_id INTEGER REFERENCES employees(employee_id),
    course_id INTEGER REFERENCES courses(course_id),
    completed_at TIMESTAMP
);
  • 顧客・注文・商品をJOINした実用的なクエリ集
  • 「平均給与より高い社員」を出すサブクエリ/部署別平均給与の自作ビュー
  • 確認テスト15問の自己採点結果と、間違えた3問の自分なりの解説メモ

⚠️ 今日のつまずきポイント

今日特にハマる場所を、予告として共有します。詰まっても普通——むしろ「ここで詰まらないと身につかない」ところです。

  • WHERE忘れ事故:DMLで最も怖い。UPDATE/DELETE を書くときは、まず SELECT * FROM ... WHERE ... で対象を確認してから、SELECTの部分を書き換えるクセを(S01, S02)
  • LEFT JOINしたのにNULL行が消える:右側テーブルの列をWHEREで絞ると事実上INNER化する。フィルタは ON 句に入れる(S03, S04)
  • インラインサブクエリにAS忘れ:FROMの中のサブクエリには必ずエイリアスが必要(PostgreSQLの仕様)(S07, S08)
  • 外部キー違反エラー:先に親テーブルにデータを入れてから子にINSERT(S09, S10)
  • トランザクション中エラー後の "current transaction is aborted"ROLLBACK; を打てば即リセットできる(S02, S11)

確認テストでもこの辺りが多く出ます。今日学んだ直後にテストで間違えるのは、むしろ理想の学習サイクルです。

🤖 今日のAIの使いどころ

昨日の「まず自分で書く → 詰まったところだけ聞く」を今日も継続します。今日特に有効なAIの使い方:

  • 危険操作の事前確認:「UPDATE employees SET salary = salary * 1.1 WHERE department_id = 1; を実行する前に、影響範囲と注意点を教えて」
  • JOINの設計相談:「customers と orders と order_items と products をつないで、顧客ごとの累計購入額を出したい。SQLの骨組みを教えて(私が肉付けする)」
  • エラーメッセージ翻訳:エラーをそのままコピペして「これ何?どう直す?」と聞く——確認テスト中も含めて、これが最速

確認テスト中は、まず自分で15分は粘ってください。AIに頼るのは採点後の解説で十分です。「間違えたところ」が、明日からの財産になります。

読み上げを開始します...

AIに質問する