kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

SQLのテクニックに関するおすすめのコンピューター書籍「達人に学ぶ SQL徹底指南書」

SQLのテクニックに関するおすすめのコンピューター書籍は「達人に学ぶ SQL徹底指南書」です。

本書は初心者向けのものとはなっていません。

記載内容もSQLの基本構文から始まるのではなく、CASE式の解説からとなっています。

SQLの基本構文がある程度分かっている方であれば、SQLの色々な使い方をより深く知ることができるものとなっているかと思います。

本書は大きく二つの部で構成されており、第一部ではSQLのテクニックについて、第二部ではSQLの成り立ちについて記載されています。

SQLのテクニックの部では、以下のようなものが記載されています。

CASE式の解説では、行持ちのデータを列持ちに展開する方法や、UPDATE文で複数のパターンの更新を一度に実行する方法、ORDER BYで独自の条件でソートする方法等、幅広い使い方ができることが紹介されています。

次に取り上げられているのがウィンドウ関数になります。

ウィンドウ関数では、取得対象の行の前後の行との行間比較や、ある項目でグループ化した集約結果を、グループ化する前の各行の取得結果として扱うことができることが、詳しく解説されています。

ウィンドウ関数を使った行間比較の方法については、この後の章でも取り上げられています。

CASE式とウィンドウ関数は、様々な集約結果をSQLで取得するときに知っていると、便利なものとなるかと思います。

EXISTS述語の解説では、SQLで全てのデータがある条件を満たすことを記載するときに、反対の考えで、ある条件を満たさないデータは存在しないという二重否定の形として、NOT EXISTSを使用して表現できることが記載されています。

複数の行が条件を満たすことを表現するときに、一行でも条件を満たさないものがあれば対象外とし、条件の対象を一行とするように考えることができると、SQLでよりよい条件の表現方法を思い付き、パフォーマンスもよいものとすることに役立つかと思います。

HAVING句の解説では、ある項目でグループ化したときに最も要素数が多くなるものを探す方法、ある項目でグループ化したときにNULLを含まないものを探す方法、ある項目でグループ化したときに特定の1種類の値のみが含まれるものを探す方法、ある項目でグループ化したときに重複した値が含まれるものを探す方法、ある項目でグループ化したときに別のテーブルのある項目の値と同じものを全て含むもの、別のテーブルにはない値は含まないものを探す方法等、集合に対する条件指定はHAVING句を使用することで様々なものが表現できることが紹介されています。

HAVING句は集約結果に対する単純な条件の絞り込みくらいに使用するイメージがあるかもしれませんが、知っていると便利な様々な使い方を知ることができます。

また、CASE式を使って、ある条件を満たすときは1を返し、満たさないときは0を返すようにしたもの(特性関数と呼ばれている)を、集約関数の引数に使用することで、条件の絞り込みを行なう方法も記載されており、SQLでの集合の扱い方の理解を深めるのに役立つかと思います。

SQLでの数列の扱いに関する解説では、連番の生成方法、連番となるデータの中から欠番となっているものを取得する方法、連番に対するある状態を表す項目の値が、特定の回数連続して同じ値になっている範囲を取得する方法、日付に対するある数値が、連続して増加している範囲を取得する方法等、知っていないとなかなか思い付かないような、SQLで順序を持つデータを扱う方法が紹介されています。

他にも、自己結合、外部結合の使い方、集合演算を行う方法、NULLの扱い方、SQLのパフォーマンス、SQLプログラミングの作法等、SQLの動作、書き方を理解するのに役立つものが記載されています。