「保存」から「取り出し」へ

「保存」から「取り出し」へ

前回のL-05まで、私たちはデータを分けて保存する設計を積み上げてきました。一対多や多対多を整理し、表とキーで関係を表す準備が整いました。ここから話は、保存から取り出しへと移ります。この講義は、分けて保存したデータを、実際に画面へ出すための第一歩に当たります。

このスライドのポイント

  • L-05まで: 一対多・多対多を整理し、表とキーでデータを分けて保存する設計を積み上げた
  • ここから話は「保存」から「取り出し」へ移る
  • この講義は、分けて保存したデータを実際に画面へ出すための第一歩

SQL・SELECT・WHEREとは

SQL・SELECT・WHEREとは

SQLとは、DBMSへの指示を書くための専用の言語です。これまで扱ってきたJavaScriptとは別の言語で、宣言型と呼ばれます。宣言型とは、手順を細かく書くのではなく、何が欲しいかだけを書く書き方のことです。そのSQLの中で、データを取り出す文がSELECTです。基本の形はSELECT 列 FROM 表 WHERE 条件で、WHEREの条件は、E-04で学んだ式と同じく、比較や論理で書きます。

このスライドのポイント

  • SQL: DBMSへの指示を書くための専用の言語。宣言型(「どうやって」でなく「何が欲しいか」を書く)
  • SELECT: データを取得する文
  • 基本形: SELECT 列 FROM 表 WHERE 条件
  • WHEREの条件は、E-04で学んだ式(比較・論理)と同じ発想で書く

なぜSELECTを読める必要があるか

なぜSELECTを読める必要があるか

これが読めないと、AIが生成したSQLを前にして、これは何を取ってくる文なのか、を確認できません。画面に一覧を表示するとき、その裏では必ずこうした取得の文が動いています。中身がわからないまま任せてしまうと、意図と違うデータが表示されても気づけません。SELECTを読めることは、AIの成果物を確認するための土台になります。

このスライドのポイント

  • 読めないと: AIが生成したSQLが「何を取ってくる文か」を確認できない
  • 画面の一覧表示の裏では、必ずこうした取得の文が動いている
  • 中身がわからないまま任せると、意図と違うデータが出ても気づけない

SELECT文の3部構造

SELECT文の3部構造

SELECT文は、大きく3つの部分に分けて読みます。SELECTのあとに何を、FROMのあとにどこから、WHEREのあとにどの条件で、が続きます。この3点セットを押さえれば、長いSQLも落ち着いて読み解けます。実は、E-08で学んだ配列のfilterと発想は同じです。条件に合うものだけを選び出す考え方はそのままで、違うのは、実行される場所がアプリではなくDBMSの側だという点です。

このスライドのポイント

  • SELECT文は3つの部分で読む: SELECT=何を/FROM=どこから/WHERE=どの条件で
  • この3点セットを押さえれば、長いSQLも落ち着いて読み解ける
  • E-08で学んだ配列のfilterと発想は同じ(条件に合うものだけを選ぶ)
  • 違いは、実行される場所がアプリではなくDBMS側であること

具体例: 今月の1万円以上の経費

具体例: 今月の1万円以上の経費

具体例を見ます。今月の1万円以上の経費が見たい、という要望を考えます。これはSQLで、SELECT アスタリスク FROM expenses WHERE amount 以上 10000 AND expense_date 以上 今月の初日、と書けます。金額が1万円以上、かつ日付が今月の初日以降、という業務の日本語が、ほぼそのままSQLへ翻訳されていることがわかります。ANDは複数の条件を同時に満たすという意味で、これもE-04で学んだ論理の考え方です。

このスライドのポイント

  • 要望「今月の1万円以上の経費が見たい」をSQLにする
  • SELECT * FROM expenses WHERE amount >= 10000 AND expense_date >= '2026-07-01'
  • 業務の日本語が、ほぼそのままSQLへ翻訳される
  • ANDは複数条件を同時に満たす意味(E-04の論理の考え方)

技術サンプルカード: SELECT文を読む

技術サンプルカード: SELECT文を読む

技術サンプルカードです。種別はsql、目的はSELECT文の4つの部分を読み分けることです。サンプルの4行は、上から順に、何を、どこから、どの条件で、どの順で、に対応します。ORDER BYは並び順の指定で、DESCは降順、つまり新しい日付が上に来ます。このSELECT文は読み取り専用で、データを変えることはないため、B章で学んだコマンドの安全区分でいえば、安全な側に入ります。

このスライドのポイント

  • 種別: sql
  • 目的: SELECT文の4つの部分を読み分ける
  • サンプル本体:

混同しやすい: SQLとJavaScript

混同しやすい: SQLとJavaScript

混同しやすいのは、SQLとJavaScriptです。SQLはDBMSへ送る言語、JavaScriptはアプリを動かす言語で、役割がはっきり分かれています。J章で見たハンドラーの中から、DBMSへSQLの文を送る、という2つの言語の分業になっています。同じプログラムでも、どこで、誰に向けて書くのかが違う、と押さえておいてください。

このスライドのポイント

  • SQL=DBMSへ送る言語/JavaScript=アプリを動かす言語(役割が分かれる)
  • J章のハンドラーの中から、DBMSへSQLの文を送る、という2言語の分業
  • 同じ「プログラム」でも、どこで・誰に向けて書くかが違う

バイブコーディングでの確認点

バイブコーディングでの確認点

AIの確認点です。AIが生成したSQLは、そのまま信じるのではなく、このSQLを日本語に訳してください、と頼み、業務の要件と突き合わせます。J-07で学んだ、業務ロジックを逆から確認する型と同じやり方です。逆方向の練習も有効で、AIへの質問例としては、先月の未承認経費の一覧をSQLにしてください、と頼み、出てきた文を自分で読み解いてみてください。

このスライドのポイント

  • AIの生成したSQLは、そのまま信じず「日本語に訳して」で業務要件と突き合わせる
  • J-07で学んだ、業務ロジックを逆から確認する型と同じやり方
  • 逆方向の練習も有効(要件をSQLにさせ、出た文を自分で読む)

まとめと次回

まとめと次回

最後に一問一答です。SELECT文で、行を絞り込む句は何でしょうか。……答えはWHEREです。列を選ぶのがSELECT、表を指すのがFROM、そして行を条件で絞るのがWHEREでした。30秒でまとめます。SQLはDBMSへの宣言型の言語で、SELECTは、何を・どこから・どの条件で、の3部で読む、これが取得の基本形です。次回のL-07では、分けて保存した複数の表を、取り出すときに合わせて見るJOINへ進みます。関連資料は「DBワード50」「DB設計プロンプト50」です。

このスライドのポイント

  • 一問一答:「SELECT文で行を絞り込む句は?」→ WHERE
  • 30秒まとめ: SQLはDBMSへの宣言型の言語/SELECTは「何を・どこから・どの条件で」の3部で読む
  • 次回L-07: 分けた表を合わせて見るJOINへ
  • 関連資料:「DBワード50」「DB設計プロンプト50」