1. ホーム >
  2. 書籍 >
  3. 達人に学ぶSQL徹底指南書

達人に学ぶSQL徹底指南書


形式:
書籍
発売日:
ISBN:
9784798115160
価格:
本体2,400円+税
仕様:
A5・320ページ
分類:
データベース

本書籍の他の形式を確認する

  • このエントリーをはてなブックマークに追加

プロのDBエンジニア必携!SQLの正しい書き方/考え方

本書は、開発者向けWebサイト「CodeZine」(コードジン、http://codezine.jp)で、2006年6月から続いている連載を加筆し、再編集したものです。標準SQL準拠のため、Oracle/SQL Server/DB2/PostgreSQL/MySQL等々の幅広いデータベースに対応している他、実際の開発現場でも活かしやすい実践的なコーディング事例も多数紹介。チューニング・テクニックやリレーショナル・データベースの歴史なども網羅しており、脱初級や、より高みを目指したいDBエンジニアに必携の一冊となっています。


第1部 魔法のSQL

1-1 CASE式のススメ
 ~SQLで条件分岐を表現する
 演習問題
1-2 自己結合の使い方
 ~集合指向言語としてのSQL
 演習問題
1-3 3値論理とNULL
 ~SQLの甘い罠
1-4 HAVING句の力
 ~意外な名脇役
 演習問題
1-5 外部結合の使い方
 ~SQLの弱点:その傾向と対策
 演習問題
1-6 相関サブクエリで行と行を比較する
 ~SQLで行間比較
 演習問題
1-7 SQLで集合演算
 ~SQLと集合論
 演習問題
1-8 EXISTS述語の使い方
 ~SQLの中の述語論理
 演習問題
1-9 SQLで数列を扱う
 ~述語論理を使いこなそう
 演習問題
1-10 帰ってきたHAVING句
 ~もう脇役とは言わせない!
 演習問題
1-11 SQLを速くするぞ
 ~お手軽パフォーマンス・チューニング
1-12 SQLプログラミング作法
 ~SQLコーディング・スタイルの確立に向けて

第2部 リレーショナル・データベースの世界

2-1 リレーショナル・データベースの歴史
 ~1969年―全てはここから始まった
2-2 なぜ“関係”モデルという名前なの?
 ~なぜ“表”モデルという名前ではないのか
2-3 関係に始まり関係に終わる
 ~閉じた世界の幸せについて
2-4 アドレス、この巨大な怪物
 ~なぜリレーショナル・データベースにはポインタがないのか?
2-5 GROUP BYとPARTITION BY
 ~類は友を呼ぶ
2-6 手続き型から宣言型・集合指向へ頭を切り替える7箇条
 ~円を描く
2-7 SQLと再帰集合
 ~SQLと集合論の間
2-8 神のいない論理
 ~論理学の歴史をちょっとだけ
2-9 NULL撲滅委員会
 ~万国のDBエンジニア、団結せよ!
2-10 SQLにおける存在の階層
 ~厳しき格差社会

第3部 付録

3-1 演習問題の解答
3-2 参考文献

本書はダウンロードファイルの提供はございません。

書籍への問い合わせ

正誤表、追加情報をご確認の上、こちらよりお問い合わせください

書影の利用許諾について

本書籍に関する利用許諾申請はこちらになります

追加情報はありません。

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

書籍・SEshop限定PDF:ご購入刷数  電子書籍 最終更新日:2018年04月09日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 013
下から1~2行目
3刷
次に示す表3の内容を集計し、表4の結果を求めるような場合です。
次に示すの内容を集計し、次頁の表の結果を求めるような場合です。
2009.02.04
1刷 018
1段落目の4行目
4刷
実は4000円の昇給だった
実は2万4000円の昇給だった
2009.10.26
1刷 031
2つ目のコード部分(結果)
3刷
name_1 name_2 ------ ------ りんご みかん りんご バナナ みかん バナナ
name_1 name_2 ------ ------ りんご みかん バナナ みかん バナナ りんご
2008.10.30
1刷 031
3段落目の2行目
3刷
名前順にソートして自分より後ろに来る」
文字コードの順にソートして自分より(ここでは)前に来る」
2008.10.30
1刷 037
中ほどの本文 3行目
5刷
現状では実装に依存し、PostgreSQLやMySQL
現状では実装に依存し、MySQL
2010.08.03
1刷 037
下部のSQL文と結果
―――――――― -- ランキング 1位から始まる。同順位が続いた後は不連続 SELECT P1.name, P1.price, (SELECT COUNT(P2.price) FROM Products P2 WHERE P2.price > P1.price) + 1 AS rank_1 FROM Products P1; ―――――――― ■結果 ―――――――― name price rank ----- ------ ------  :  :
―――――――― -- ランキング 1位から始まる。同順位が続いた後は不連続 SELECT P1.name, P1.price, (SELECT COUNT(P2.price) FROM Products P2 WHERE P2.price > P1.price) + 1 AS rank_1 FROM Products P1 ORDER BY rank_1; ―――――――― ■結果 ―――――――― name price rank_1 ----- ------ ------  :  :
2018.04.09
1刷 057
下から4行目
NOT EXSITS
NOT EXISTS
2017.12.18
1刷 107
一番下のコードブロックの、上から5行目
3刷
WHEN S1.sale < s2.sale THEN ''
WHEN S1.sale < s2.sale THEN ''
2009.02.04
1刷 112
本文最終行
5刷
ROWSキーワードで行数を指定します。
ROWSーワードで行数を指定します(ただし、PostgreSQLではROWSキーワードは使えません)
2010.08.03
1刷 128
1つ目のリスト囲み、1行目
8刷
SELECT DISTINCT CASE WHEN COUNT(*) = 0
SELECT CASE WHEN COUNT(*) = 0

※DISTINCTはなくても結果が変わりません。
2012.06.26
1刷 128
ページ中ほど
8刷
集合演算3回+DISTINCT1回の計4回のソートが発生する
集合演算3回のソートが発生する

※リストの変更に合わせて修正
2012.09.06
1刷 169
ページ下部のSQL文中のコメント
7刷
--条件2の否定 --条件3の否定
--条件3の否定 --条件2の否定

SQL文のコメント「--条件2の否定」と「--条件3の否定」を逆にする。
2012.03.05
1刷 188
下から10行目
男子の平均は(100 + 30) / 2 = 65、女子の平均は(100 + 49) / 2 = 74.5ですから、
男子の平均は(100 + 0 + 0 + 30) / 4 = 32.5、女子の平均は(0 + 100 + 49 + 0) / 4 = 37.25ですから、
2018.01.31
1刷 207
「IN 述語で複数のキーを利用する場合は、一箇所にまとめる」5行目
d列が主キーです。
id列が主キーです。
2017.08.24
1刷 316
項目「COALESCE関数」の参照ページ
4刷
220
95, 220
2009.10.26
1刷 奥付
著者紹介 1行目
3刷
金融系SI企業に勤務する
SI企業に勤務する
2009.06.26