すでにSQL言語を使いこなしている読者のために、ユニークですぐに役立つテクニックを紹介するのが、本書『SQL Hacks』です。プログラムのパフォーマンスを向上させ、データベースの管理を容易にする秘密の方法を紹介します。陥りがちな失敗例の解説が充実していることも特徴です。取り上げるテーマは「SQLの基本」「JOIN、UNION、VIEW」「文字列の処理」「日付の処理」「数値の処理」「オンラインアプリケーション」「さまざまなデータの構成」「小さいデータの格納」「ロックとパフォーマンス」「レポートの作成」「ユーザと管理」など。MySQLを中心に、SQL Server、Oracle、PostgreSQLについても解説を行いました。
SQL Hacks
―データベースを自由自在に操るテクニック
Andrew Cumming, Gordon Russell 著、西沢 直木 訳
- TOPICS
- Hacks , Programming , Database
- 発行年月日
- 2007年07月
- PRINT LENGTH
- 440
- ISBN
- 978-4-87311-331-9
- 原書
- SQL Hacks
- FORMAT
目次
訳者まえがき クレジット はじめに 1章 SQLの基本 1. コマンドラインからSQLを実行する 2. プログラムからデータベースに接続する 3. 条件付きINSERTコマンドを実行する 4. データベースの更新 5. SQLを利用してクロスワードパズルを解く 6. 同じ計算を繰り返さない 2章 JOIN、UNION、VIEW 7. 既存のクエリに手を付けずにデータ構造を変更する 8. 行と列を絞り込む 9. インデックスで絞り込む 10. サブクエリをJOINに変更する 11. 集計用のサブクエリをJOINに変更する 12. 複雑なデータ更新を単純化する 13. 適切なJOIN形式を選択する 14. 組み合わせを作成する 3章 文字列の処理 15. LIKEを使わずにキーワードを検索する 16. 複数の列から文字列を検索する 17. アナグラムを解く 18. メールアドレスをソートする 4章 日付の処理 19. 文字列を日付に変換する 20. データの傾向をつかむ 21. 日付単位でレポートを作成する 22. 四半期レポートを作成する 23. 第2火曜日を取得する 5章 数値の処理 24. 行をまたいで乗算する 25. 残高を求める 26. JOINが返さない行も結果に含める 27. 重なる範囲を特定する 28. ゼロ除算を避ける 29. COUNT関数を使わずに件数を数える 30. 複数列の最大値を求める 31. 集約された値をバラバラにする 32. 「丸め誤差」に対処する 33. 明細と小計を一度で取得する 34. 中央値を求める 35. 集計結果を図で表現する 36. 2点間の距離を計算する 37. 請求書と振込額の帳尻を合わせる 38. ミスによる桁の入れ替わりを発見する 39. 累進課税を適用する 40. 順位を求める 6章 オンラインアプリケーション 41. Webサイトをテーブルに取り込む 42. SVGを使用してデータからグラフを作成する 43. Webアプリケーションにページナビゲーションを追加する 44. Microsoft. AccessからMySQLに接続する 45. Webサーバのログを処理する 46. データベースに画像を保存する 47. SQLインジェクションの脆弱性とは 48. SQLインジェクション攻撃を防ぐ 7章 さまざまなデータ構成 49. 過去のデータも保存しておく 50. 構造の異なるテーブルを結合する 51. 行を列として表示する 52. 列を行として表示する 53. 矛盾するデータを削除する 54. テーブルを非正規化する 55. 外部データをインポートする 56. 二人の仲を取り持つ 57. 一意の連番を作成する 8章 小さいデータの格納 58. データベースにパラメータを保存する 59. ユーザごとのパラメータを定義する 60. ユーザごとのパラメータリストを作成する 61. 行単位でセキュリティを設定する 62. テーブルを参照せずにクエリを実行する 63. テーブルを使わずに行を生成する 9章 ロックとパフォーマンス 64. 分離レベルを決定する 65. 悲観的ロックを使用する 66. 楽観的ロックを使用する 67. トランザクションで暗黙的にロックする 68. 送信ボタンの連続クリックに対処する 69. データベース内で各処理を実行する 70. クエリの実行結果を結合する 71. 大量の行を取得する 72. 指定件数の結果を取得する 73. データの保存先としてファイルも利用する 74. テーブルを比較して同期をとる 75. 1対多形式のJOINが返すデータ量を減らす 76. 大きなデータは圧縮する 10章 レポートの作成 77. データのないカテゴリもピボットテーブルに含める 78. データを範囲ごとに区切る 79. 更新する行を特定する 80. 「ケビン・ベーコンの6次」を表現する 81. ディシジョンテーブルを作成する 82. 連続値や欠測値を生成する 83. 各グループの上位の値を取得する 84. 列にカンマ区切りリストを保存する 85. ツリーを横断する 86. データベースでキューを利用する 87. カレンダーを生成する 88. サブクエリの抽出条件に2つの値を使う 89. 5つの項目から3つを選択する 11章 ユーザと管理 90. ユーザアカウントを実装する 91. テーブル定義のエクスポートとインポート 92. アプリケーションを配置する 93. データベースユーザを自動作成する 94. 一般ユーザと管理者を作成する 95. 自動更新を実行する 96. 行動監視用のログを記録する 12章 幅広いアクセス 97. 匿名アクセスを許可する 98. 長時間実行されているクエリに対処する 99. ディスクを使い果たさないようにする 100. ブラウザからSQLを実行する 索引