銀河鉄道

SQLはFROMから考え始める|まず構造を作ってから詳細へ

サムネイル
Think fromFROM
structure-first
構造から始める

構造から?

木を見るより森を見る
ってこと

FROMで 森 を作る

森 = 全体像の仮想テーブルを作る

FROM が
仮想テーブルを作る

The FROM clause is done first.
FROMは最初に処理される。

FROMは森、SELECTは個々の木
  • FROMは一番最初に処理される
    • JOIN, UNIONなどでvirtual tableを作る
  • SELECTやWHEREは、virtual table(森)がなければ機能しない

森を作ることは
「構造を作る」と呼ぶ

JOIN も FROM の中で構造を支える

JOIN は FROM の中で
「どうテーブルを合成するか」を定義する

結合する JOIN
  • 複数のテーブルを結合して、新たな構造を作る
  • JOINも「構造変換」の一種

関連用語

英語用途・言い換え
framework枠組み
blueprint設計図
whole picture
big picture
全体像
forest森(全体空間の比喩)
ingredients
raw materials
素材、原材料
virtual tableFROM句で作られる仮想の一時テーブル
structure-first構造設計を優先する
join operatorテーブルを結合するSQL構文
execution order実行順

どうやって
構造から始めるの?

1歩ずつ考えよう

構造から始めるステップ

実行順序を確認する

execution order|実行順

FROM → WHERE → GROUP BY → HAVING → SELECT

先に SELECT を
書かない

コーディング前に構造をメモする習慣を作る

どんなテーブルがあれば
欲しい答えが出るのか

  1. 出したい結果を紙に書く
  2. そのために必要な列を洗い出す
  3. テーブル間のJOIN構造を描く
  4. テーブルの形を書いてみる
  5. 最後にSELECT句で整形

書き出す例
出したい結果:社員名、部署名、1ヶ月の勤務時間合計
使用テーブル:社員・部署・勤怠
関係:社員→部署(部署ID)、社員→勤怠(社員ID)
中間構造:社員部署ビュー → 勤怠明細ビュー
集計方法:SUM(勤務時間)、GROUP BY 社員名・部署名

どんなテーブルがあれば…
つまり、どんな FROM にすればいいか

参考文献

  • Joe Celko’s SQL for Smarties: Advanced SQL Programming 
  • 達人に学ぶ SQL徹底指南書(ミック)
  • 達人に学ぶDB設計徹底指南書(ミック)

Think from FROM.

FROMから!

FROM は 地味だけど偉大な存在

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。