プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに 電子書籍(ジョー・セルコ ミック ミック)|翔泳社の本
  1. ホーム >
  2. 電子書籍 >
  3. プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに

プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに


監修
監訳

形式:
電子書籍
発売日:
ISBN:
9784798141190
価格:
本体4,600円+税

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

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

日米のDBの達人、夢の共演

SQLの第一人者であるジョー・セルコの名著『Joe Celko's SQL for Smarties, Fourth Edition: Advanced SQL Programming』の日本語版です。本書は、SQLの実務経験があるエンジニアを対象として、SQLプログラミングの基礎的な考え方から、テーブル操作、グループ化、集計関数、クエリの最適化など、SQL全般について詳しく解説した「SQLプログラミングバイブル」です。基本から高度なテクニックまで、網羅的にSQLプログラミングの知識を習得できます。翻訳・監修は『達人に学ぶSQL徹底指南書』でおなじみのミック氏が担当。SQLエンジニア必携の一冊です。

※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。

(翔泳社)

目次の登録はありません。

付属データはこちら

書籍への問い合わせ

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

書影の利用許諾について

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

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

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

対象の書籍は正誤表がありません。

最終更新日:2017年04月07日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 076
一番下(3つ目)のコード囲み、6行目
2刷
girl_name VARCHAR(30) NOT NULL,
girl_name VARCHAR(30) NOT NULL

行末のカンマは不要
2013.05.25
1刷 086
コード 1~9行目
4刷
--オリジナルのソースデータを作る CREATE TABLE Source (pair_nbr INTEGER NOT NULL UNIQUE, a INTEGER NOT NULL, b INTEGER NOT NULL, PRIMARY KEY (a, b)); INSERT INTO Source VALUES (1, 1, 1), (2, 1, 2), (3, 2, 3), (4, 7, 2), (5, 2, 4), (6, 5, 5), (7, 5, 1), (8, 5, 3), (9, 9, 0), (10, 11, 2);
--オリジナルのソースデータを作る CREATE TABLE Source2 (pair_nbr INTEGER NOT NULL UNIQUE, a INTEGER NOT NULL, b INTEGER NOT NULL, PRIMARY KEY (a, b)); INSERT INTO Source2 VALUES (1, 1, 1), (2, 1, 2), (3, 2, 3), (4, 7, 2), (5, 2, 4), (6, 5, 5), (7, 5, 1), (8, 5, 3), (9, 9, 0), (10, 11, 2);
2017.02.27
1刷 093
コードの下 6行目
3刷
RESTRICTオプションを指定して参照するオブジェクトが存在しないかことを強く推奨する。
RESTRICTオプションを指定して参照するオブジェクトが存在しないか確認することを強く推奨する。
2015.01.14
1刷 109
1つ目のコード囲み、8行目
2刷
INSERT INTO FooLookup (x, y, foobar)
INSERT INTO FooBar (x, y, foobar)
2013.05.25
1刷 114
コード囲み、1行目
2刷
CREATE FUNCTION fib(IN n INTEGER)
CREATE FUNCTION fib(n IN INTEGER)

INの位置を訂正
2013.05.25
1刷 115
一番下(3つ目)のコード囲み、2行目
2刷
(SELECT a, b FROM (VALUES (0, 1))
(SELECT a, b FROM (VALUES (0, 1)) AS Foobar(a, b)

VALUES句にテーブル名が必要
2013.05.25
1刷 161
1つ目のコード
4刷
FOR t FROM 0 TO n DO SUM(a[t]/ POWER(1.00 + r), t))) END FOR;
FOR t FROM 0 TO n DO SUM(a[t]/ POWER(1.00 + r), t) END FOR;

2行目の「))」を削除します。
2017.02.27
1刷 161
1つめのコードの下 1行目
3刷
ここでa[i]は投資期間(i)に対するキャッシュフローで、
ここでa[t]は投資期間(t)に対するキャッシュフローで、
2015.10.09
1刷 175
一番下(4つ目)のコード 下から2行目
4刷
AND S2.seq <= CHAR_LENGTH(I1.input_string) + 1
AND S2.seq <= CHAR_LENGTH(I1.input_string) + 2
2017.02.27
1刷 211
コード 4~6行目
4刷
-- テストデータの登録 INSERT INTO RoundTest (original) VALUES (2134.5678. 0.00), etc.
-- テストデータの登録 INSERT INTO RoundTest (original, rounded) VALUES (2134.5678, 0.00), etc.
2017.02.27
1刷 213
CEIL/CEILING関数の説明
4刷
8. {CEIL | CEILING}():入力以上の最大の整数
8. {CEIL | CEILING}():入力以上の最小の整数
2017.02.27
1刷 222
2つ目のコード囲み、10行目(3つ目のWHERE句)
2刷
WHERE MOD (number = :num, 1000))
WHERE number = MOD ( :num, 1000))
2013.05.25
1刷 269
2つ目のコード囲み(ド・モルガンの法則を適用した後)
3刷
SELECT col1   FROM Table2  WHERE ((col1 <> 1)    AND (col1 <> 2)    AND (col1 <> 3)    AND (col1 <> 4)    AND (col1 <> 5)    AND UNKNOWN);
SELECT col1   FROM Table2  WHERE ((col1 <> 1)    AND (col1 <> 2)    AND UNKNOWN);
2015.12.22
1刷 269
1つ目のコード囲み
3刷
WHERE NOT ( (col1 = 1)         OR (col1 = 2)         OR (col1 = 3)         OR (col1 = 4)         OR (col1 = 5)         OR (col1 = NULL));
WHERE NOT ( (col1 = 1)         OR (col1 = 2)         OR (col1 = NULL));
2015.03.27
1刷 310
ページ下部のコード囲み、4行目・7行目
3刷
BEGIN -- 間違い! UPDATE Books    SET price = price * 1.15  WHERE price >= 25.00; UPDATE Books    SET price = price * 0.9  WHERE price < 25.00; END;
BEGIN -- 間違い! UPDATE Books    SET price = price * 1.15  WHERE price < 25.00; UPDATE Books    SET price = price * 0.9  WHERE price >= 25.00; END;
2014.03.10
1刷 371
1行目
2刷
最小の始点と最大の終点
最大の始点と最小の終点
2013.06.24
1刷 425
コード
4刷
Table1 LEFT OUTER JOIN Table2 ON Table1.a = Table2.a -- 結合条件 AND Table2.c = 't'; -- SARG
SELECT Table1.a, Table1.b, Table2.a, Table2.c FROM Table1 LEFT OUTER JOIN Table2 ON Table1.a = Table2.a -- 結合条件 WHERE Table2.c = 't'; -- SARG
2017.02.27
1刷 428
一番上のコード囲み、2行目と6行目
2刷
FROM (SELECT stud_nbr, math_course, math_course  ・・・          (SELECT stud_nbr, math_course, math_course
FROM (SELECT stud_nbr, math_course  ・・・          (SELECT stud_nbr, math_course

2行目と6行目の2箇所。math_courseは1列しか選択しない
2013.05.27
1刷 437
コード
4刷
SELECT Students.*, DomesticStudents.*, ForeignStudents.* FROM Students LEFT OUTER JOIN DomesticStudents ON CASE Students.student_type WHEN 'D' THEN 1 ELSE NULL END = 1 LEFT OUTER JOIN ForeignStudents ON CASE Students.student_type WHEN 'F' THEN 1 ELSE NULL END = 1;
SELECT Students.*, DomesticStudents.*, ForeignStudents.* FROM Students LEFT OUTER JOIN DomesticStudents ON CASE Students.student_type WHEN 'D' THEN 1 ELSE NULL END = 1 LEFT OUTER JOIN ForeignStudents ON CASE Students.student_type WHEN 'F' THEN 1 ELSE NULL END = 1; WHERE ( Students.student_nbr = DomesticStudents.student_nbr OR Students.student_nbr = ForeignStudents.student_nbr);
2017.02.27
1刷 458
7~9
4刷
7. 1対他の結合 8. 1対他の外部結合 9. 他対他の結合
7. 1対の結合 8. 1対の外部結合 9. の結合
2017.02.27
1刷 459
1つ目のコード囲み、3行目
4刷
SELECT emp_nbr, (salary + COALESCE(commission), 0.00)
SELECT emp_nbr, (salary + COALESCE(commission, 0.00))

1つ目の「)」の位置を訂正
2016.08.25
1刷 483
1つ目のコード 4行目
4刷
FROM (VALUES (1, f(1))))
FROM (VALUES (1,f(1))) AS X(i,j)
2017.02.27
1刷 492
結果の2行上
4刷
ON B4.batch_nbr BETWEEN X.batch_nbr AND X.end_batch_nbr
ON B4.prod_code = X.prod_code AND B4.batch_nbr = X.batch_nbr
2017.04.07
1刷 492
結果の4行目
4刷
| B |  4 | 5 | 80.000000000000 |
| B | 4 | 5 | 75.000000000000 |
2017.04.07
1刷 529
「Presidencies」の8行目
4刷
'John' '' 'Adams' 'DR' 1825 1829
'John' 'Q.' 'Adams' 'DR' 1825 1829
2017.04.07
1刷 530
Presidenciesテーブル 6行目
4刷
'John' "" 'Adams' "DR" 1825 1829
'John' "Q." 'Adams' "DR" 1825 1829
2017.02.27
1刷 559
2つ目の網掛け
4刷
(2 *(<column ref 1>, ...,<column ref n-1>) + GROUPING(<column ref n>)
2 * GROUPING(<column ref 1>, ...<column ref n-1>) + GROUPING(<column ref n>)
2017.02.27
1刷 572
ページ下部の表の上の本文
3刷
結果は、部署別で最も小さい社員番号を最も社員の入社日を返す。
結果は、部署別で最も小さい社員番号を持つ社員の入社日を返す。
2015.03.27
1刷 579
3つ目の網掛け
4刷
(12,12,14,17,17,19)
(12,12,12,14,17,19)
2017.02.27
1刷 579
4つ目の網掛け
4刷
(12,12,12,12,14,14,17,17,17,17,19,19)
(12,12,12,12,12,12,14,14,17,17,19,19)
2017.02.27
1刷 584
1行目
4刷
だが、WHERE句の変形はこれで終わりではない。ド・モルガンの法則を使う。
だが、WHERE句の変形はこれで終わりではない。
2017.02.27
1刷 589
3つ目のコード囲み、1行目と4行目
2刷
SELECT acct_nbr, trans_date, trans_amt,       SUM(trans_amt)         OVER(PARTITION BY acct_nbr                  ORDER BY trans_date
SELECT acct_nbr, trans_time, trans_amt,       SUM(trans_amt)         OVER(PARTITION BY acct_nbr                  ORDER BY trans_time

1行目と4行目の2箇所。trans_date ではなくtrans_time
2013.05.27
1刷 592
下から3行目
4刷
RKはRの順位
RKはパーティション内に含まれる当該行の順位
2017.02.27
1刷 620
2行目
4刷
このクエリがやっていることは、S1で開始点の番号を作りS2で終了点の番号を作っている。
このクエリがやっていることは、R1で開始点の番号を作りR2で終了点の番号を作っている。
2017.02.27
1刷 685
36.2.2の1つ目のコード囲み、2行目
2刷
CHAR_LENGTH (path) AS level
CHAR_LENGTH (path)
2013.05.27
1刷 706
37.2.7の1つ目のコード囲み、下から4行目
2刷
INSERT INTO AdjacencyListGraph (begin_node_id, end_node_id)
INSERT INTO AdjacencyListGraph
2013.05.27
1刷 716
「Job Apps」の下の文章
4刷
現職のjob_title列はNullで表現する。
現職のend_date列はNullで表現する。
2017.02.27
1刷 754
1つ目のコード囲み 7~8行目
4刷
AND P1.last_name IN (SELECT last_name
AND P1.first_name IN (SELECT first_name
2017.02.27