霸榜18年,作者連續20年獲得微軟MVP,這本SQL書憑什麼成爲暢銷經典

說到 SQL ,大多數人都不陌生,不管你是 Java 、C++ 還是 .NET 開發人員,工作中你都要編寫 SQL 查詢。由於數據庫是現代 Java 或者 Web 應用程序中不可或缺的組成部分,擁有良好的 SQL 技能在面試中也會得到青睞。

有關 SQL 學習,有很多經典入門書,比如,麻省理工學院的參考教材《SQL必知必會》、日系最易上手入門書《SQL基礎教程》《SQL進階教程》還有美亞 5 星好評的《SQL經典實例》,這些書都能讓你在 SQL 起步階段快速上手。

不過今天我們要說的這本,是一本新書,說它新是因爲剛剛上市,但實際上這本書已經連續霸榜美國亞馬遜數據庫圖書榜單長達 18 年之久。可以說是一本不折不扣、經得住時間推敲的經典好書。

這本書最早一版誕生於 2000 年,中文版《SQL查詢凡人入門》由機械工業出版社出版。美國亞馬遜上讀者對這本書的評價,沒有一版是低於 4 星的,堪稱數據庫圖書中的神作。

作者是約翰·L.維斯卡斯(John L. Viescas),連續 20 年獲得微軟的 MVP,他還是擁有 50 多年經驗的獨立數據庫諮詢師。

有趣的是,在寫這本書之前,他曾經認爲自己是數據庫 SQL 方面的專家,但是後來他發現自己其實是個“凡夫俗子”。他這樣說道:

  • 如果你使用計算機程序來訪問數據庫系統中的信息,你很可能是凡夫俗子。使用應用程序內置的查詢工具未能獲得期望的信息時,你就需要研究底層的 SQL 語句,找出其中的原因。

  • 如果你最近在使用桌面數據庫應用程序,卻在使用它定義和查詢所需的數據時舉步維艱,你就是凡夫俗子。

  • 如果你是數據庫程序員,需要跳出習慣性思維去解決一些複雜的問題,你就是凡夫俗子。

  • 如果你是精通某種數據庫系統的專家,但需要將該系統中的數據整合到另一種支持 SQL 的系統中,你就是凡夫俗子。

怎麼辦,好怕自己已經踏上了“凡夫俗子”的道路。不過不用怕,這本書也許可以幫你。

468 頁不薄也不厚,書中所有內容均基於 ISO 制定的新 SQL 數據庫語言標準編寫。重點講解 SQL 查詢和數據操作的相關主題,包括關係型數據庫和 SQL、SQL 基礎、多表操作、彙總和分組數據,以及修改數據集等內容。

相比於其他 SQL 圖書,這本書更專注於 SQL 而不針對任何具體的數據庫系統。是市面上罕有的講解 SQL 查詢的專著。全書分爲六個部分:

第一部分

開篇作者簡要介紹了數據庫查詢語言 SQL 的發展歷程,並討論一些確保數據庫設計合理的簡單規則。讀完這一部分,你將大致瞭解關係型數據庫是如何面世的,以及它是如何成爲當今業界使用最廣泛的數據庫的。通過講解這些,作者希望能夠讓你對你使用的數據庫系統有些認識。  

(書中示例)

第二部分

主要講解的是 SQL 的基礎。作者介紹瞭如何使用 SELECT 語句、如何編寫表達式、如何使用 ORDER BY 子句進行排序,以及如何使用 WHERE 子句篩選數據。

(書中示例

第三部分

主要講解的是使用多個表。作者演示如何編寫從多個表中獲取數據的查詢,包括如何使用內連接、外連接和 UNION 將表關聯起來,以及如何使用子查詢。

(書中示例

第四部分

主要講解的是數據彙總和分組。作者討論如何獲取彙總信息以及如何對其進行分組和篩選。在這一部分,你將學習 GROUP BY 和 HAVING 子句。

(書中示例

第五部分

主要講解的是修改數據集。作者討論如何編寫查詢來修改表中的一系列行。在這一部分,你將學習如何使用 UPDATE、INSERT 和 DELETE 語句。

(書中示例

第六部分

主要講解的是如何解決棘手問題,並介紹更復雜的問題。在這一部分,你將拓寬視野,瞭解如何解決複雜的否定型問題和多條件問題、如何使用 CASE 執行條件測試、如何跳出習慣性思維使用非連接表(笛卡兒積),還將學習如何在 GROUP BY 中使用其他關鍵字來生成小計和累積以及將輸出數據劃分爲多個子集。

(書中示例

書的末尾還配有幾個附錄,列出了本書介紹過的所有 SQL 元素的語法圖、示例數據庫的結構、6 種主流數據庫系統實現的日期和時間操作函數,以及可幫助你深入瞭解 SQL 的推薦讀物。

作者針對 4 種數據庫系統(Microsoft Access、Microsoft SQL Server、MySQL 和 PostgreSQL)提供了 5 個示例數據庫。

以上就是對這本書的簡單介紹,如果你是數據庫新手,剛知道可使用 SQL 來獲取所需的數據,那麼這裏有所有的 SQL 基礎知識等你去探索。

如果你是專家級用戶,但需要解決複雜的問題或集成多個支持 SQL 的系統,那麼你會對如何利用數據庫語言 SQL 的複雜功能有更深刻的認識。所以不管你處在 SQL 的什麼階段,這本絕對是你想要的!

美亞4.3星評

市面上罕有的講解SQL查詢的專著

《SQL查詢:從入門到實踐(第4版)》

約翰·L.維斯卡斯 著

袁國忠 譯

擁有 50 多年經驗的數據庫專家傾囊相授,本書重點講解 SQL 查詢和數據操作的相關主題,包括關係型數據庫和 SQL、SQL 基礎、多表操作、彙總和分組數據,以及修改數據集等內容,針對編寫 SQL 查詢提供了輕鬆易懂的逐步指導,幷包含上百個帶有詳細說明的例子。

作者簡介

約翰·L.維斯卡斯(John L. Viescas),擁有 50 多年經驗的獨立數據庫諮詢師。職業生涯之初,作爲系統分析師,負責爲 IBM 大型機系統設計數據庫應用程序;後在 Applied Data Research 任職,負責 IBM 大型機數據庫產品的研發和客戶支持。

1988 年加入 Tandem 計算機公司,負責開發和實現市場營銷數據庫程序。1993 年自創公司,爲全球各種規模的企業提供數據庫諮詢和培訓服務。

從 1993 年到 2015 年,創紀錄地每年都被微軟授予“最有價值專家”稱號。

John 還寫過多部關於數據庫的著作,還爲技術刊物寫過許多文章,並在世界各地的會議和用戶組會議上發表過演講。

(滑動查看目錄)

第一部分 關係型數據庫和SQL

第1章 何謂關係型數據庫 2

1.1 數據庫類型  2

1.2 關係模型簡史  2

1.3 關係型數據庫剖析  4

1.4 學習關係型數據庫有何好處 9

1.5 小結  10

第2章 確保數據庫結構合理  11

2.1 爲何在本書開頭討論數據庫設計 11

2.2 爲何要關心數據庫結構是否合理 11

2.3 微調列  12

2.4 微調錶  17

2.5 建立合理的關係  25

2.6 就這些嗎  29

2.7 小結  29

第3章 SQL簡史  31

3.1 SQL的起源  31

3.2 早期的廠商實現  32

3.3 標準應運而生  32

3.4 ANSI/ISO標準的發展歷程 33

3.5 商用實現  36

3.6 展望未來  36

3.7 爲何要學習SQL  36

3.8 本書基於哪個SQL版本 37

3.9 小結  37

第二部分 SQL基礎

第4章 創建簡單查詢 40

4.1 SELECT簡介  40

4.2 SELECT語句  41

4.3 說點題外話:數據和信息 42

4.4 將請求轉換爲SQL  43

4.5 消除重複行  47

4.6 對信息進行排序  48

4.7 保存所做的工作  51

4.8 語句舉例  51

4.9 小結  57

4.10 練習  57

第5章 獲取除簡單列外的其他信息 59

5.1 何謂表達式  59

5.2 你要表示哪些類型的數據 60

5.3 修改數據類型:CAST函數 61

5.4 指定顯式值  62

5.5 表達式類型  65

5.6 在SELECT子句中使用表達式 71

5.7 空值:Null  75

5.8 語句舉例  77

5.9 小結  81

5.10 練習  82

第6章 篩選數據 84

6.1 使用WHERE提煉信息  84

6.2 定義查找條件  87

6.3 使用多個條件  98

6.4 再談Null:一個注意事項 106

6.5 以不同的方式表示條件 109

6.6 語句舉例  109

6.7 小結  114

6.8 練習  115

第三部分 使用多個表

第7章 集合思維 118

7.1 何謂集合  118

7.2 集合運算  119

7.3 SQL 集合運算  128

7.4 小結  133

第8章 內連接 135

8.1 何謂連接  135

8.2 內連接  135

8.3 內連接的用途  145

8.4 語句舉例  146

8.5 小結  158

8.6 練習  158

第9章 外連接 161

9.1 何謂外連接  161

9.2 左/右外連接  162

9.3 全外連接  173

9.4 外連接的用途  175

9.5 語句舉例  176

9.6 小結  184

9.7 練習  184

第10章 UNION 186

10.1 何謂UNION  186

10.2 使用UNION編寫查詢 187

10.3 UNION的用途  194

10.4 語句舉例  194

10.5 小結  200

10.6 練習  200

第11章 子查詢 202

11.1 何謂子查詢  202

11.2 作爲列表達式的子查詢 203

11.3 作爲篩選器的子查詢 207

11.4 子查詢的用途  214

11.5 語句舉例  215

11.6 小結  222

11.7 練習  223

第四部分 數據彙總和分組

第12章 簡單彙總 226

12.1 聚合函數  226

12.2 在篩選器中使用聚合函數  233

12.3 語句舉例  234

12.4 小結  238

12.5 練習  238

第13章 數據分組 240

13.1 爲何要將數據分組  240

13.2 GROUP BY子句  242

13.3 一些限制  247

13.4 GROUP BY的用途  249

13.5 語句舉例  250

13.6 小結  255

13.7 練習  255

第14章 篩選分組數據 257

14.1 一種新的篩選方式  257

14.2 在哪裏篩選更好  259

14.3 HAVING的用途  263

14.4 語句舉例  264

14.5 小結  268

14.6 練習  269

第五部分 修改數據集

第15章 更新數據集 272

15.1 何謂更新 272

15.2 UPDATE語句 272

15.3 有些數據庫系統允許在UPDATE子句中使用連接 278

15.4 UPDATE的用途  280

15.5 語句舉例  281

15.6 小結  289

15.7 練習  290

第16章 插入數據集 291

16.1 何謂插入  291

16.2 INSERT語句  292

16.3 INSERT的用途  299

16.4 語句舉例  299

16.5 小結  305

16.6 練習  305

第17章 刪除數據集 307

17.1 何謂刪除  307

17.2 DELETE語句  307

17.3 DELETE的用途  311

17.4 語句舉例  312

17.5 小結  317

17.6 練習  317

第六部分 解決棘手問題

第18章 否定型問題和多條件型問題 320

18.1 簡單地複習集合  320

18.2 解決否定型問題  323

18.3 根據多個肯定條件查找 327

18.4 語句舉例  333

18.5 小結  343

18.6 練習  343

第19章 條件測試 346

19.1 條件表達式(CASE) 346

19.2 使用CASE解決問題 349

19.3 語句舉例  354

19.4 小結  361

19.5 練習  361

第20章 使用非連接數據和“驅動”表 363

20.1 何謂非連接數據  363

20.2 使用非連接數據解決問題 366

20.3 使用“驅動”表解決問題 367

20.4 語句舉例  371

20.5 小結  381

20.6 練習  382

第21章 執行復雜的分組計算 384

21.1 不同分組的合計  384

21.2 擴展GROUP BY子句  386

21.3 使用ROLLUP獲取分層合計  387

21.4 使用CUBE計算各種組合的彙總 393

21.5 使用GROUPING SETS合併彙總 396

21.6 分組技術變種  398

21.7 語句舉例  400

21.8 小結  405

21.9 練習  405

第22章 將數據劃分到窗口中 407

22.1 將數據劃分到窗口中有何用 407

22.2 計算行號  419

22.3 數據排名  420

22.4 將數據劃分到五分位區間中 424

22.5 結合使用窗口和聚合函數 426

22.6 語句舉例  429

22.7 小結  439

22.8 練習  439

附錄A SQL標準語法圖 441

附錄B 示例數據庫的結構 453

附錄C 與日期和時間相關的數據類型、運算和函數 460

附錄D 推薦讀物 469

結語  470

文末暢聊

小夥伴留言說說你平時會用到 SQL 的哪些功能?你覺得在使用 SQL 的過程中,哪些操作難住了你?我們會在精選留言中選出 5 位獲得這本 SQL 寶典。活動截至 2020.6.4。

推薦閱讀

程序員想要學好數學,從認真讀一本書開始!

作爲谷歌開發者佈道師,我爲什麼要寫這本通俗的《數據壓縮入門》(一)

CSS Tricks網站創始人作序推薦,這本書助你成爲Web開發高手

☟ 一鍵擁有

【在看】一下,好書讓更多人看到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章