內容簡介

本書結合SQL實踐與實際案例,整合了實用的解決方案與洞見,可幫助大家解決複雜的問題,設計出能簡化數據管理的資料庫。作者擁有擔任世界頂級資料庫顧問與講師的豐富經驗,在本書中歸納了編寫高質量SQL語句的61個具體方法,並提供不同SQL版本的差異詳情,無論你使用何種SQL版本都能從中獲益。書中提供了大量清晰、務實的解釋,以及專家的建議與大量實用的代碼。本書除了介紹語法之外,還會討論資料庫設計的佳實踐、層次結構管理與元數據等議題。若你對SQL已經有基本的認識,本書將能幫助你成為解決SQL問題的專家。書中內容涵蓋各種SQL版本:IBMDB2、MicrosoftAccess、MicrosoftSQLServer、MySQL、OracleDatabase與PostgreSQL。





 

作者介紹

John L. Viescas是一位擁有超過45年工作經驗的獨立資料庫顧問。他初是一名系統分析師,曾為IBM大型機系統設計過大規模的資料庫應用程式。他在德克薩斯 州達拉斯做過6年的資料研究工作,在那裡,他帶領著一個超過30人的團隊,負責IBM大型機資料庫產品的研究、開發與客戶支援工作。在達拉斯做資料研究期 間,John完成了他在德克薩斯大學達拉斯分校的商業與金融學專業的學業,並以優異的成績獲得該專業的學士學位。

1988年,John加入 Tandem電腦公司,負責美國西部銷售片區的資料庫行銷程式的開發與實施。他是Tandem公司關聯式資料庫管理系統NonStop SQL技術研討會的發起者。John的本書《A Quick Reference Guide to SQL》(Microsoft Press,1989),作為一個研究專案記錄了SQL語法在ANSI-86 SQL標準、IBM的DB2、Microsoft的SQL Server、Oracle公司的Oracle以及Tandem的NonStop SQL之間的相似性。他從Tandem休假期間,寫了《Running Microsoft•Access》(Microsoft Press,1992)的第1版。之後又陸陸續續寫了4本Running系列的書,3本《Microsoft•Office Access Inside Out》(Microsoft Press,2003、2007和2010)即Running系列的後續篇,以及《Building Microsoft•Access Applications》(Microsoft Press,2005)。他也是暢銷書《SQL Queries for Mere Mortals》 (第3版,Addison-Wesley,2014)的作者。John目前是連續被評為Microsoft Access MVP(有價值專家)時間長的紀錄保持者,1993~2015年每年都獲此殊榮。John與他的妻子一直住在法國巴黎,已經30多年了。

Douglas J. Steele與電腦打交道已經超過45年了,用過大型機和小型電腦(初甚至還用過穿孔卡!)。2012年退休之前,他曾在一家大型國際石油公司就職超 過31年。雖然在職業生涯的後期他主要從事系統中心配置管理器(System Center Configuration Manager,SCCM)任務序列的開發,將Windows 7安裝在全球超過100 000台電腦上,但是他大部分時間關注的焦點還是資料庫與資料建模。

Doug連續17年被評為Microsoft MVP,他發表了許多關於Access的文章,是《Microsoft•Access•Solutions: Tips, Tricks, and Secrets from Microsoft•Access•MVPs》(Wiley, 2010)的合著者,擔任過許多書的技術編輯。

Doug 擁有滑鐵盧大學(加拿大安大略省)系統設計工程專業碩士學位,他的研究主要集中在為特殊電腦使用者設計使用者介面(但話又說回來,20世紀70年代末,很少 有電腦使用者是普通的!)。這項研究源於他的音樂背景(他是多倫多皇家音樂學院鋼琴表演的會員)。他還癡迷於釀酒,曾畢業於尼亞加拉學院(安大略省尼亞加 拉湖)的釀酒師與釀酒廠運營管理專業。

Doug和他的愛妻一直住在加拿大安大略省凱薩琳街,已經超過34年了。你可以通過以下郵箱聯繫他:[email protected]

Ben G. Clothier是IT Impact公司的解決方案架構師,IT Impact公司是一家在Access和SQL Server領域領先的開發商,總部位於伊利諾州芝加哥市。他曾擔任很多公司的獨立顧問,包括J Street Technology和Advisicon等知名公司,負責把一個小型的Access項目從個人解決方案擴大為整個公司業務線的整體解決方案。代表專案包 括為水泥公司做的工作記錄跟蹤與庫存管理功能,為保險公司做的醫療保險計畫生成器,還有為某國際航運公司做的訂單管理功能。Ben是 UtterAccess論壇的管理員,並且與Teresa Hennig、George Hepworth和Doug Yudovich合著了《Professional Access•2013 Programming》(Wiley,2013),與Tim Runcie和George Hepworth合著了《Microsoft•Access•in a SharePoint World》(Advisicon,2011),也是《Microsoft•Access•2010 Programmer抯 Reference》(Wiley,2010)的特邀作者。他擁有Microsoft SQL Server 2012解決方案助理認證,也是MySQL 5.0認證開發人員。自2009年以來,他一直被微軟評為MVP。

Ben和妻子Suzanne、兒子Harry住在德克薩斯州的聖安東尼奧。
 

目錄

本書讚譽
譯者序

前言
致謝
關於作者
關於技術編輯
 
第1章 資料模型設計1
第1條:確保所有表都有主鍵1
第2條:避免存儲冗餘數據4
第3條:消除重復資料組7
第4條:每列只存儲一個屬性9
第5條:理解為什麼存儲計算列通常有害無益13
第6條:定義外鍵以確保參考完整性16
第7條:確保表間關係的合理性19
第8條:當第三范式不夠時,採用更多範式22
第9條:非規範化資料倉庫27
 
第2章 可程式設計性與索引設計30
第10條:創建索引時空值的影響30
第11條:創建索引時謹慎考慮以小化索引和資料掃描35
第12條:索引不只是過濾37
第13條:不要過度使用觸發器41
第14條:使用過濾索引包含或排除資料子集45
第15條:使用聲明式約束替代編碼校驗47
第16條:瞭解資料庫使用的SQL方言並編寫相應的代碼48
第17條:瞭解何時在索引中使用計算結果51
 
第3章 當你不能改變設計時55
第18條:使用視圖來簡化不能更改的內容55
第19條:使用ETL將非關係資料轉換為有用的資訊60
第20條:創建匯總表並維護64
第21條:使用UNION語句將非規範化資料列轉行66
 
第4章 過濾與查找數據72
第22條:瞭解關聯代數及其如何在SQL中實現72
第23條:查找不匹配或缺失的記錄78
第24條:瞭解何時使用CASE解決問題79
第25條:瞭解解決多條件查詢的技術83
第26條:如需完美匹配,先對資料進行除操作88
第27條:如何按時間範圍正確地過濾日期和時間的列91
第28條:書寫可參數化搜索的查詢以確保引擎使用索引94
第29條:正確地定義“左”連接的“右”側97
 
第5章 聚合100
第30條:理解GROUP BY的工作原理100
第31條:簡化GROUP BY子句106
第32條:利用GROUP BY或HAVING解決複雜的問題109
第33條:避免使用GROUP BY來查找大值或小值113
第34條:使用OUTER JOIN時避免獲取錯誤的COUNT()117
第35條:測試HAVING COUNT(x) 第36條:使用DISTINCT獲取不重複的計數123
第37條:知道如何使用視窗函數126
第38條:創建行號與排名129
第39條:創建可移動彙總函式131
 
第6章 子查詢136
第40條:瞭解在何處使用子查詢136
第41條:瞭解關聯和非關聯子查詢的差異140
第42條:盡可能使用公共表運算式而不是子查詢145
第43條:使用連接而非子查詢創建更高效的查詢151
 
第7章 獲取與分析中繼資料154
第44條:瞭解如何使用系統的查詢分析器154
第45條:學習獲取資料庫的中繼資料164
第46條:理解執行計畫的工作原理168
 
第8章 笛卡兒積175
第47條:生成兩張表所有行的組合並標示一張表中間接關聯另一張表的列175
第48條:理解如何以等分量排名177
第49條:知道如何對表中的行配對181
第50條:理解如何列出類別與前三偏好185
 
第9章 計數表189
第51條:根據計數表內定義的參數生成空行189
第52條:使用計數表和視窗函數生成序列193
第53條:根據計數表內定義的範圍生成行196
第54條:根據計數表定義的值範圍轉換某個表中的值199
第55條:使用日期表簡化日期計算205
第56條:創建在某個範圍內所有日期的日程表209
第57條:使用計數表行轉列212
 
第10章 層次資料建模217
第58條:從鄰接清單模型開始218
第59條:對不常更新的資料使用嵌套集以提升查詢性能220
第60條:使用存儲路徑簡化設置與搜索222
第61條:使用祖先遍歷閉包做複雜搜索224
附錄 日期與時間類型、運算子和函數228
網路書店 類別 折扣 價格
  1. 新書
    87
    $360