西沢 直木 著
データベース処理にSQLは欠かせません。SQL自身は一般的なプログラミング言語と比べるとそれほど難解な言語ではありませんが、処理によっては作成するSQL文が複雑になることもあります。そんなとき、これから取り組む処理のヒントや、失敗例とその解決策などがまとめられている“レシピ”のようなリファレンスがあれば役立つことでしょう。
本書では、データベース処理に必要になりそうな項目や、よくあるトラブルについて、目的別にまとめています。それぞれの項目では身近なデータを使用して、日常的な話題にまつわるデータベース処理も取り上げました。また、複雑なSQL文を組み立てるまでのプロセスを見せたり、必要に応じて処理前後のデータを掲載するようにしています。
データベースを実際に業務でお使いの方だけではなく、SQLを学習中の方にとっても参考にしていただくことができる、SQLの“万能レシピ”となる1冊です。
(「はじめに」より抜粋)
第1章 データの取得/ソート/結合
1.1 データの取得
001 全データを取得したい
002 [!]コマンドラインでSQL文の実行結果が文字化けする
003 [!]SQL文の記述ミスでなるビープ音を消したい
004 列のエイリアスを指定したい
005 [!]名前にハイフンが付くテーブルにアクセスできない
006 データをランダムに取得したい
007 データに重みを付けてランダムに表示したい
008 一定確率でデータをランダムに表示したい
009 テーブルを参照せずにデータを取得したい
010 サブクエリを実行したい
1.2 データのソート
011 データをソートしたい
012 [!]数値のソート結果がおかしい
013 列の一部でソートしたい
014 条件に応じて異なる列でソートしたい
015 「大」「中」「小」を大きい順にソートしたい
016 都合の悪いデータを考慮してソートしたい
1.3 テーブルの結合
017 テーブルを結合したい
018 売上が0の商品を表示したい
019 総当たり戦の組み合わせを作成したい
020 複数のテーブルを1つにまとめたい
021 [!]UNIONによる結合結果がおかしい
第2章 データの絞り込み
2.1 条件指定によるデータの絞り込み
022 条件に一致するデータを取得したい
023 データをあいまい検索したい
024 データを範囲で絞り込みたい
025 データの出力行数を制限したい
026 [!]LIMIT句とOFFSET句の注意
027 指定値のデータを取得したい
028 指定値以外のデータを取得したい
029 指定値以上、または以下のデータを取得したい
2.2 テーブル操作によるデータの絞り込み
030 データの重複を削除したい
031 余計な文字列を無視してデータの重複を削除したい
032 集計結果で絞り込みたい
033 同姓同名がいないかチェックしたい
034 テーブルの差分を取得したい
035 出席記録のみを参考にして欠席者を割り出したい
036 異常なデータを検知したい
037 データのランクを求めたい
038 [!]MySQLのGROUP BY句の特性に注意
039 カテゴリ内のランクを求めたい
第3章 データの集計とグループ化
3.1 データの集計
040 データの合計を求めたい
041 データの偏差値を求めたい
042 データの平均を求めたい
043 [!]平均が実態と異なるデータに対処したい
044 最低点や最高点を除外して平均を求めたい
045 移動平均を求めたい
046 [!]誰が最も優秀かを出力するとエラーになる
047 複数列の最大値と最小値を求めたい
048 データの件数を求めたい
049 [!]データの件数が正しく取得できない
050 ページングの実装に必要なデータ件数を取得したい
051 累計を求めたい
052 小計を求めたい
053 構成比を求めたい
054 [!]構成比の計算がエラーになる
055 クロス表を作成したい
056 集計結果を棒グラフで出力したい
057 [!]グラフの出力結果がおかしい
3.2 データのグループ化
058 データをグループ化したい
059 指定件数でデータをグループ化したい
060 同じグループのデータを1行で出力したい
061 集計単位を緩めてデータの傾向をつかみたい
062 グループ内の最大値と最小値を活用したい
第4章 データの追加/変更/削除
4.1 データの追加
063 データを追加したい
064 [!]「NOT NULL」なのに空の列がある
065 既存テーブルのデータの後ろにデータを継ぎ足したい
066 [!]主キーが重複してデータのコピーがうまくいかない
067 データを一括でインポートしたい
068 [!]インポート結果が文字化けする
069 [!]「(株)」を追加すると文字化けする
070 Excelデータで作成した名簿を取り込みたい
071 大量のテストデータを短時間で作成したい
072 データ追加と同時にログを記録したい
073 既存の場合は更新して、それ以外は追加したい
074 データを100件のみ格納したい
4.2 データの変更と削除
075 データを変更したい
076 条件に応じてデータを変更したい
077 変更前後の値を記録したい
078 変更された件数を取得したい
079 データを削除したい
080 [!]全データ削除後の連番が1から始まらない
081 すべてのテーブルを空にしたい
082 データを擬似的に削除したい
083 売上が0の商品を削除したい
084 マスター削除と同時に明細も削除したい
第5章 文字列と数値の処理
5.1 文字列の処理
085 複数列の値を結合したい
086 [!]カンマ区切りで複数列を結合するのが面倒
087 文字列を結合して組み合わせを作成したい
088 文字列の一部を抽出したい
089 テーブルを参照せずに数値を名称に交換したい
090 文字列の暗号化と復号をしたい
091 文字列を数えたい
092 文字列の一部を伏字にしたい
093 [!]シングルクォーテーションが追加できない
094 アルファベットを一覧表示したい
5.2 数値の処理
095 四則演算を実行したい
096 連番を作成したい
097 文字列と数値の混じった連番に対処したい
098 「年+通し番号」の連番を生成したい
099 [!]データの削除によって連番にすき間ができる
100 連続して空いている番号を求めたい
101 ROW_NUMBERを使わずに行番号を取得したい
102 既存データの連番を1から振り直したい
103 数値を右ぞろえで出力したい
104 数値をランダムに取得したい
105 MySQLのランダム性を検証したい
106 剰余を求めたい
107 数値を丸めたい
第6章 日付の処理
6.1 日付の取得
108 日時を取得したい
109 指定した書式で日時を出力したい
110 日付の要素を取得したい
111 [!]時刻の書式指定がうまくいかない
112 日付の加算や減算をしたい
113 月末日を取得したい
114 次の月曜日を取得したい
115 第3月曜日を取得したい
116 曜日名を日本語で取得したい
117 UNIXタイムスタンプと日付を変換したい
118 「時・分・秒」を相互交換したい
6.2 日付の活用
119 年齢を求めたい
120 うるう年かどうかチェックしたい
121 データの追加および変更時刻を自動で記録したい
122 四半期を取得したい
123 会計年度を取得したい
124 連続した日付を取得したい
125 [!]出力行数が多いSQL文に対処したい
126 2つの日付の間隔を求めたい
127 2つの日付の重なりを調べたい
128 年初から指定日数が経過した日付を求めたい
第7章 データベースとサーバーの管理
7.1 データベースの管理
129 データベースを作成したい
130 テーブルを作成したい
131 既存テーブルからテーブルを作成したい
132 カンマ区切り文字列からテーブルを作成したい
133 テーブルの存在をチェックしてからテーブルを作成したい
134 テーブル名を一覧表示したい
135 テーブルの制約を設定したい
136 インデックスを作成したい
137 ビューを作成したい
138 テーブルの定義を変更したい
139 テーブル定義を表示したい
140 全テーブルに対するSELECT文を動的に生成したい
141 [!]ALTER TABLEの注意点
142 テーブルを最適化したい
143 ユーザーを作成したい
144 権限を付与したい
145 [!]ユーザーのパスワードが設定できない
146 [!]指定したパスワードでログインできない
7.2 サーバーの管理
147 サーバーの情報を取得したい
148 システム変数を取得したい
149 サーバーの稼動状況を表示したい
150 クエリキャッシュの動作状況を確認したい
151 テーブルキャッシュの利用状況を確認したい
152 スレッドキャッシュの利用状況を確認したい
153 キーバッファの参照状況を確認したい
154 ソートバッファの利用状況を確認したい
155 テンポラリテーブルの作成状況を確認したい
156 スロークエリの状況を確認したい
157 SQL文の実行状況を調べたい
158 エラーの内容を出力したい
159 ベンチマークを実行したい
160 プロファイル情報を取得したい
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。