以前、Git入門サイト「Git Ready」とセキュリティ教科書「Secure Steady」を作った記事を書きました。
今回はSQL・データベースの教科書サイトを作りました。
作った動機
SQLの情報は量は多いのに、ほしい形で揃っている場所が少ないと感じています。
- 構文リファレンスは公式ドキュメントが正確だけど読み物としては重い
- 設計やチューニングは書籍に散らばっていて索引性が低い
- 「重複行を消したい」のようなGoal起点の逆引きは個人ブログの寄せ集め
- PostgreSQL / MySQL / SQLite / SQL Serverの記法差分は表で見たい
これらを一箇所にまとめるのが目的です。
サイトの構成
ターゲットは初心者〜中級者、RDBMS横断で記法が共通な部分を主軸にしています。
| 分類 | 内容例 |
|---|---|
| 構文リファレンス | SELECT / JOIN / GROUP BY / WINDOW / CTE / INDEX / TRANSACTION |
| 設計ガイド | 正規化1NF〜BCNF、非正規化の判断基準、インデックス設計、実行計画の読み方 |
| 逆引き | 「重複行を消したい」→ DISTINCT / GROUP BY / ROW_NUMBER() |
| RDBMS差分表 | LIMIT vs TOP など、記法が異なる箇所を対応範囲つきで整理 |
各ページには概念図のSVGを必ず付けています。SQLは文字列だけ追ってもイメージが湧きにくいので、JOINの種類やCTEの展開はまず絵で入る構成にしました。
設計で意識したこと
- トランザクション分離レベルやN+1問題のようなハマりやすいテーマは、アンチパターン集にまとめて先に読める場所に置く
- RDBMS依存の話は必ず「どのDBで有効か」を明記する
- 「正規化しすぎ禁物」のような設計判断は、判断基準と具体例をセットで示す
- 実行計画の読み方は、EXPLAIN出力の具体例を添えて走査方法を説明する
特に逆引きは意識して作っていて、業務でSQLを書くときの入り口はだいたい「こういう結果がほしい」から始まるはずです。そこから構文にたどり着ける導線を増やしました。
おわりに
SQLは1980年代からある言語なのに、いまだに学習の入り口は散らかっているのが面白いところです。同じ悩みを持っている方の助けになれば。
