🍰

達人に学ぶSQL徹底指南書を読んで感想

2024/03/31に公開

❓ はじめに

達人に学ぶSQL徹底指南書
https://www.shoeisha.co.jp/book/detail/9784798157825

上記本の「SQLプログラミング手法(p.231)」の章を読んで、ざっくり感想になります。

📖 読もうと思ったきっかけ

3年前に新人教育のため、同著者のSQL 第2版 ゼロからはじめるデータベース操作を読んで、
非常に分かりやすく、他の本も読んでみたいと思ったのがきっかけです。
達人シリーズだと、達人に学ぶDB設計徹底指南書も有名ですが、
先にSQLの話をもっと深堀りしたいなと考え、こちらの本を手に取りました。

✨良かったところ

個人的に特に印象に残ったところです。

SQLのコードスタイル

SQLのコードは今までPJルールに合わせて書いており、、、
主流のお作法について知れて勉強になりました。

  • 大文字と小文字
    • どちらか統一せず、メリハリをつける
      • 予約語は大文字
      • テーブル・列名は小文字

↑の大文字小文字は、どちらか統一した方が良いかと思い、
結構個人的な勉強とかではわざわざ大文字に合わせてました。。
可読性からしたら分けた方が見やすいですね。

また、長期的に見るとパフォーマンスより可読性の方が重要で、
プログラムのコードスタイルと同じ考え方だと思いました。
KISSや名前重要の考え方は、当たり前ですがSQLやDB設計でも共通ですね。
(こちらについては別記事でまとめているので良ければ)

RDBの歴史

こちらは第2部で、下記のRDBの深層に近い話中心でした。

  • リレーショナルデータベースがなぜ生まれたか、
  • NoSQLは今後RDBにどのような効果をもたらすか、
  • 関係モデルについて
  • ウインドウ関数の誕生について

RDS以前の歴史などはほとんど知らなかったので、
Oracleはなんと1979年から存在していたのは驚きでした。
(1980年前半くらいかと勝手なイメージありました)
SQLの歴史、なぜ現在のような構造となったのか等、
背景的なところの説明があって、SQLを深く知れました。
少しこの辺りは難しい部分もあったのですが、再度読み直したいと思います。

NULL撲滅委員会

目次を読んでいて一番気になっていた部分です。
NULLは様々な理由からバグの根源となり、
RDSの構造上でも完全な削除はできない存在なので、
削除の指針が紹介されていました。

📖の解決方法としては、この2点でした。

  1. デフォルトで何か値を入れられないか検討する。
  2. どうしようもない場合、NULLを許可する。

数値は0で代替、文字列は「名無しの権兵衛」を割り振り…
という手段が色々紹介されています。
(名無しの権兵衛といった表現には、クスっとしました)

🐾 まとめ

一通り読んで、普段業務中で調べても出てこないテクニックなど知れてよかったです!
日常的にSQLを触っていると、疑問に感じていた部分も、
本書を読んで理解できた部分もありました。
(なぜIS NULLなのか等)
演習問題はまだやっていない部分もあるので、挑戦してみようと思います。

🦔 今後意識していきたいところ

  • SQLは誰が読んでも分かりやすいように意識する
    • 動いたらヨシ!なSQLを書かない
  • DB設計を考える際、NULLは極力使用しないようにする
    • 何か値を入れられないか検討する
    • コードは数字ではなく、文字列型で宣言する
  • 本書の「SQLを速くするぞ」を参考に、パフォーマンスも考慮する
    • DISTINCTEXISTSで代用する
    • サブクエリを引き数に取る場合、INよりEXISTSを使用する
  • 新人に教える際は、SQLの背景・深い部分も伝えたい
    • 雑学として頭に入っていると良さそう

気になった方は、是非続きは本で続きを読んでいただければ幸いです💪

達人に学ぶSQL徹底指南書のリンクはこちら
https://www.shoeisha.co.jp/book/detail/9784798157825

Discussion