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

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

SQLとは、DBMSへの指示を書くための専用の言語です。これまで扱ってきたJavaScriptとは別の言語で、宣言型と呼ばれます。宣言型とは、手順を細かく書くのではなく、何が欲しいかだけを書く書き方のことです。そのSQLの中で、データを取り出す文がSELECTです。基本の形はSELECT 列 FROM 表 WHERE 条件で、WHEREの条件は、E-04で学んだ式と同じく、比較や論理で書きます。
このスライドのポイント
- SQL: DBMSへの指示を書くための専用の言語。宣言型(「どうやって」でなく「何が欲しいか」を書く)
- SELECT: データを取得する文
- 基本形: SELECT 列 FROM 表 WHERE 条件
- WHEREの条件は、E-04で学んだ式(比較・論理)と同じ発想で書く
なぜSELECTを読める必要があるか

これが読めないと、AIが生成したSQLを前にして、これは何を取ってくる文なのか、を確認できません。画面に一覧を表示するとき、その裏では必ずこうした取得の文が動いています。中身がわからないまま任せてしまうと、意図と違うデータが表示されても気づけません。SELECTを読めることは、AIの成果物を確認するための土台になります。
このスライドのポイント
- 読めないと: AIが生成したSQLが「何を取ってくる文か」を確認できない
- 画面の一覧表示の裏では、必ずこうした取得の文が動いている
- 中身がわからないまま任せると、意図と違うデータが出ても気づけない
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万円以上の経費が見たい、という要望を考えます。これは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文を読む

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