推薦兩本學SQL的啟蒙書籍

--

學習有的時候,真的需要找適合自己的書籍。

今天給大家推薦這本書,市面上其實已經沒有出版了,能買到的都是二手書或電子書。

它就是《Microsoft SQL Server 2008技術內幕》上下卷:
﹣Microsoft SQL Server 2008技術內幕:T-SQL語言基礎
﹣Microsoft SQL Server 2008技術內幕:T-SQL查詢

上卷
下卷

剛工作的時候,公司用的是SQL Server的資料庫,SQL知識還是比較薄弱的,會簡單的CURD,還會點行轉列之類的知識,勉勉強強可以應付工作上的一些需要。

隨著需求的增加,越發感到力不從心,還好當時遇到的經理好心給我推薦了這兩本書。一開始也就隨便看看,越往後看越感到如獲至寶。

《T-SQL語言基礎》這本書特別適合像我這樣的初學者,有點基礎但是對於一些原理性的東西知之甚少。它從SQL語句的執行順序開始講起:

(8)SELECT (9)DISTINCT(11)<Top Num> <select list>
(1)FROM [left_table]
(3)<join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH <CUBE | RollUP>
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>

注:上面括號裡的數字代表SQL的執行順序

每一個階段會做怎麼樣的資料處理也有詳細的表述。

比如為什麼在GROUP BY後面不能使用SELECT 後面列的別名?

原因就是GROUP BY發生在前,而別名是在SELECT階段才會被執行,一個後執行的別名怎麼能提前在GROUP BY後面使用呢?(注意:MySQL在GROUP BY後面可以使用別名,與SQL Server的執行邏輯有所區別)

此外其中讓我印象非常深刻的是它的集合論:所有的查詢均可以看作一個集合。

比如說我們經常遇到的兩表關聯查詢

SELECT * FROM Customers c
JOIN Orders o ON c.CustomerID=o.CustomerID

就可以理解成集合Customers中的CustomerID同時存在於集合Orders 裡面,我們用圖可以這樣表示:

看到這裡我就感覺突然豁然開朗了,特別是一些子查詢,IN,EXISTS,UNION等等均可以看作是集合,我們寫的所有查詢其實都是在進行各種的集合運算。

上卷基本把我們日常工作中會用到的內容都講到了,具體目錄如下:

強烈推薦新手同學把上卷認真看完,最好能夠多看幾遍,直到現在我也還會偶爾翻一下,加深記憶。

《T-SQL查詢》這本主要講述的如何提高SQL程式碼質量的一些內容,最佳化部分內容較多,對於想進一步提高SQL技能的也是非常實用的。

前面3章主要是回顧上卷的核心內容,後面的章節就是一些SQL高階技能的具體闡述了,基本涵蓋了查詢過程中所有可能會遇到的知識點。

特別是查詢最佳化章節寫的非常好,我在工作中使用到的一些提高查詢的方法大多都是來源於此。

以上就是這兩本書的相關介紹了,有需要的小夥伴可以網上搜索一下。

当然我也會給大家分享寫的SQL兩件套:《SQL基礎知識第二版》和《SQL高階知識第二版》的PDF電子版。裡面有各個語法的解釋、大量的例項講解和批註等等,非常通俗易懂,方便大家跟著一起來實操。

有需要的讀者可以下載學習,關注我的Facebook,私訊關鍵字:SQL兩件套,就行~

--

--

數據分析那些事
數據分析那些事

Written by 數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

No responses yet