Effective SQL:編寫高質量SQL語句的61條有效方法(英文版)

Effective SQL:編寫高質量SQL語句的61條有效方法(英文版) pdf epub mobi txt 電子書 下載 2025

[法] John,L.,Viescas(約翰?L?威剋斯),[加拿大] Douglas,J.Steele(道格拉斯?J?斯蒂爾) ... 著,[法] John,L.,Viescas(約翰?威剋斯) 譯
圖書標籤:
  • SQL
  • 數據庫
  • 編程
  • 數據分析
  • 性能優化
  • 查詢優化
  • 開發
  • 技巧
  • 最佳實踐
  • Effective SQL
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121322846
版次:1
商品編碼:12176809
品牌:Broadview
包裝:平裝
叢書名: 原味精品書係
開本:16開
齣版時間:2017-08-01
用紙:膠版紙
頁數:348
字數:430800
正文語種:英文

具體描述

編輯推薦

適讀人群 :本書適閤有一定數據庫理論和實踐基礎的讀者。同樣也適閤數據庫管理員,數據庫開發人員以及高級用戶。

經典原味:麵嚮所有版本SQL方言的編程指南。

構造閤理數據模型,修補現有模型的缺陷。

超強作者陣容,三位微軟專傢聯袂巨獻。


內容簡介

本書全麵係統地介紹瞭SQL語言各方麵的基礎知識以及一些高級特性,包括SQL數據語言、SQL方案語言、數據集操作、子查詢以及內建函數與條件邏輯等內容。書中每個章節講述一個相對獨立的主題,並提供瞭相關示例和練習。涵蓋瞭市場上常用數據庫版本(MySQL 、Oracle 及Microsoft SQL Server等 )。同時針對開發基於數據庫的應用程序,以及日常的數據庫係統管理,本書都展現瞭大量經過實踐檢驗的方法和技巧。讀者可以通過對本書循序漸進地學習快速掌握SQL語言,也可以在實際工作中遇到問題時直接翻閱本書中的相關章節以獲取解決方案。

作者簡介

  John L. Viescas是一位有著超過45年從業經驗的獨立數據庫顧問。他從一位係統分析師開始他的職業生涯,為IBM大型機係統設計大型數據庫應用。他在達拉斯的應用數據研究中心工作瞭六年,在那裏他帶領30多名員工負責IBM大型計算機數據庫産品的研究、開發以及客戶支持工作。在應用數據研究工作期間,約翰完成瞭達拉斯德剋薩斯大學的商業金融學位,並以優異的成績畢業。 John 1988年加入Tandem 計算機公司,在那裏他負責在Tandem公司美國西部銷售區開發和實施數據庫的營銷方案。他開發並交付瞭用於技術研討會的關係數據庫管理係統—— NonStop SQL。約翰1989年寫瞭他的*一本書,A Quick Reference Guide to SQL(Microsoft Press,1989),該書一本是對比瞭ANSI-86 SQL 標準、IBM的DB2、微軟的SQL Server、甲骨文公司的Oracle、以及Tandem公司的NonStop SQL之間的語法相似性的研究類書。作者於1992年從Tandem公司公休時寫瞭Running Microsoft Access第一版(Microsoft Press,1992年)。他已經寫瞭四個版本的Running Microsoft Access,以及Running係列的後續作品——三個版本的Microsoft Office Access Inside Out(Microsoft Press,2003、2007、2010)和Building Microsoft Access Applications(Microsoft Press,2005)。他也是暢銷書籍SQL Queries for Mere Mortals(Addison Wesley,2014)第三版的作者。John目前保持著連續多年被微軟授予微機數據庫管理係統*有價值專傢(MVP,Most Valuable Professional)的紀錄(1993年至2015年)。John與他的妻子在法國巴黎定居瞭三十多年。

  Douglas J. Steele從事包括大型機和個人機在內的計算機相關的工作超過45年(是的,他一開始是用穿孔卡的!)。在2012退休前,他在一傢大型國際石油公司工作瞭31年多。盡管他職業生涯的高光時刻是通過發展SCCM任務序列將Windows 7推廣到全球超過10萬颱電腦上,但是數據庫和數據建模是他的主要工作方嚮。 Douglas超過17年被微軟認證為*有價值專傢(MVP),他撰寫瞭大量關於Access數據庫的文章,Douglas是Microsoft Access Solutions: Tips, Tricks, and Secrets from Microsoft Access MVPs(Wiley,2010)的閤著者,也是很多書的技術編輯。 Douglas為滑鐵盧大學係統設計工程碩士,專注於設計非傳統電腦用戶的用戶界麵研究。(當然,在七十年代末,很少有人是傳統的電腦用戶!)他的專業研究源於他的音樂背景(他擁有多倫多英國皇傢音樂學院鋼琴演奏準學士學位)。他還癡迷於啤酒並畢業於尼亞加拉學院釀酒及啤酒廠操作管理專業(濱湖尼亞加拉,安大略省)。 Douglas和他的妻子在加拿大安大略省聖凱瑟琳定居超過34年。讀者可以通過郵箱:mvphelp@gmail.com聯係Douglas。 Ben G. Clothier是芝加哥首屈一指的Access和SQL Server開發企業IT Impact公司的解決方案架構師。他曾在著名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);Ben還是Microsoft? Access? 2010 Programmer’s Reference(Wiley,2010)一書的特約作者。他擁有微軟SQL Server 2012解決方案認證和MySQL 5認證開發者等證書。從2009年開始Ben一直是微軟的*有價值專傢(MVP)。


影印版,無譯者

精彩書評

本書的寫作團隊實至名歸,給我留下瞭深刻的印象,這麼說並不足以錶達我對本書的喜愛,應當說我被這本書震驚瞭。大多數關於SQL 的書隻會告訴讀者如何去寫SQL,而本書則會告訴讀者為什麼這樣寫;大多數關於SQL 的書會將數據庫設計與實現分開闡述,而本書則將數據庫設計的考量貫穿於SQL 的各種使用場景;大多數關於SQL 的書隻會在閱覽完畢後放在書架上落灰,而本書將成為我的伴手讀物。

Roger Carlson,微軟Access MVP (1996–2015 年)


寫基本的SQL 很簡單,但是寫功能完備且運行高效的SQL 就沒那麼容易瞭,尤其是對於那些有著復雜需求的關鍵業務係統。不過現在有瞭這本優秀的SQL 讀物,無論讀者正在使用哪種數據庫管理係統,都可以快速上手編寫高質量的SQL。

Craig S. Mullins,Mullins Consulting,Inc.,DB2 金牌顧問,IBM 數據分析師


這是一本關於SQL 的佳作。它采用深入淺齣的敘述方式,使得新手也可以理解其內涵。同時,也包含瞭很多高級的SQL 竅門和技巧,能夠讓SQL 老手也受益匪淺。因此,這本書適閤任何程度的讀者,那些對數據庫設計、管理以及SQL 編程方麵有較高要求的讀者都應該閱讀這本書。

Graham Mandeno,數據庫技術顧問,微軟MVP (1996–2015 年)


對於關係型數據庫和基於SQL 的數據庫的設計者和開發者來說,這本書是*佳的資源——一部深入淺齣的讀物,書中有豐富的示例,完美地結閤瞭設計理論與編程實現,這些例子涵蓋瞭當今*常用的數據庫實現,其中包括Oracle、DB2、SQL Server、MySQL、PostgreSQL 等。本書用成熟的技術引導讀者深入學習SQL,比如在關於分層數據和統計錶的講解中,包含瞭其內部實現,以及在使用GROUP BY、EXISTS、IN、關聯或非關聯子查詢、窗口函數、各種連接語句時的性能。此外,書中有不少獨有的有趣示例,也使得這本書在SQL 類著作中格外閃耀。

Tim Quinlan,數據庫架構師,Oracle 認證DBA


對於那些睏在多種SQL 方言之中急需幫助的讀者來說,這本書能夠將你從一團亂麻中拉齣來。本書從SQL 的各種方言中分離齣公有的獨立成分,能夠讓讀者做到“閱後即用”。我從1992 年就開始使用各種SQL 實現,已經算是SQL 方言方麵的老手瞭,但依舊能夠從這本書中學到不少知識。

Tom Moreau 博士,SQL Server MVP(2001–2012 年)


這本書在描述SQL 的使用方麵完美地做到瞭內容豐富、敘述簡潔、易於理解—— 它通過展現如何使用SQL 解決現實世界中的需求問題來告訴讀者構造SQL 查詢的方法,並闡明瞭“數據如何存儲”與“數據如何查詢”之間的聯係,解釋瞭從數據庫中準確且高效地取得結果集的全過程。

Kenneth D. Snell 博士,數據庫技術顧問,前微軟Access MVP


這本書填補瞭一個知識斷檔—— 新手DBA 如何成長為高級DBA—— 本書就像是成長過程的路綫圖、行動指南、羅塞塔石碑,幫助讀者從基礎SQL 應用者變為高階使用者的教練。與其磕磕絆絆地重新發明輪子,或是迷迷糊糊地摸索數據庫的正確使用方法,不如對自己好一點—— 把這本書帶迴傢。你不僅能夠瞭解到可能需要多年摸索纔能見到的各種SQL 的實現技巧,還能深入理解數據庫供應商各種實現的原因。在你學習SQL 的旅途中,這本書能夠為你節省齣很多時間和精力。

Dave Stokes,MySQL 社區管理員,就職於甲骨文公司


對於一個嚴肅的數據庫開發人員,本書屬於必讀書目。它手把手地告訴讀者,SQL 解決現實問題的強大能力。本書的作者們使用瞭淺顯易懂的錶達方式告訴讀者每一種解決方案的利與弊。我們都知道,一個查詢有很多種實現方式,而這本書將告訴讀者為什麼某一種實現比彆的實現更高效。對於這本書,我*鍾愛的部分莫過於每一章*後的總結,它會再次嚮讀者強調要點與陷阱。我要嚮所有的數據庫開發人員推薦這本書。

Leo(theDBguyTM),UtterAccess 社區主席,微軟Access MVP


我認為這本書不僅適閤開發人員,而且適閤數據庫管理員,它能夠告訴讀者,在實現一個特定需求時,如何通過多種方式編寫高效的SQL 實現。我認為,這是一本數據庫相關從業人員的必讀書。推薦這本書的另一個理由,是它涵蓋瞭幾乎所有常見的RDBMS 應用場景,因此,對於那些需要將一種RDBMS 實現方言翻譯為另一種方言的用戶,本書就是你們要找的那本指南。我衷心祝賀本書的作者們,你們的作品無與倫比。

Vivek Sharma,甲骨文公司Oracle 核心技術與混閤雲解決方案部門特邀技術專傢


目錄

Introduction 1
A Brief History of SQL 1
Database Systems We Considered 5
Sample Databases 6
Where to Find the Samples on GitHub 7
Summary of the Chapters 8
Chapter 1: Data Model Design 11
Item 1: Verify That All Tables Have a Primary Key 11
Item 2: Eliminate Redundant Storage of Data Items 15
Item 3: Get Rid of Repeating Groups 19
Item 4: Store Only One Property per Column 21
Item 5: Understand Why Storing Calculated Data Is Usually a Bad Idea 25
Item 6: Define Foreign Keys to Protect Referential Integrity 30
Item 7: Be Sure Your Table Relationships Make Sense 33
Item 8: When 3NF Is Not Enough, Normalize More 37
Item 9: Use Denormalization for Information Warehouses 43
Chapter 2: Programmability and Index Design 47
Item 10: Factor in Nulls When Creating Indexes 47
Item 11: Carefully Consider Creation of Indexes to Minimize Index and Data Scanning 52
Item 12: Use Indexes for More than Just Filtering 56
Item 13: Don’t Go Overboard with Triggers 61
Item 14: Consider Using a Filtered Index to Include or
Exclude a Subset of Data 65
Item 15: Use Declarative Constraints Instead of Programming Checks 68
Item 16: Know Which SQL Dialect Your Product Uses and Write Accordingly 70
Item 17: Know When to Use Calculated Results in Indexes 74
Chapter 3: When You Can’t Change the Design 79
Item 18: Use Views to Simplify What Cannot Be Changed 79
Item 19: Use ETL to Turn Nonrelational Data into Information 85
Item 20: Create Summary Tables and Maintain Them 90
Item 21: Use UNION Statements to “Unpivot” Non-normalized Data 94
Chapter 4: Filtering and Finding Data 101
Item 22: Understand Relational Algebra and How It Is Implemented in SQL 101
Item 23: Find Non-matches or Missing Records 108
Item 24: Know When to Use CASE to Solve a Problem 110
Item 25: Know Techniques to Solve Multiple-Criteria
Problems 115
Item 26: Divide Your Data If You Need a Perfect Match 120
Item 27: Know How to Correctly Filter a Range of Dates on a Column Containing Both Date and Time 124
Item 28: Write Sargable Queries to Ensure That the Engine Will Use Indexes 127
Item 29: Correctly Filter the “Right” Side of a “Left” Join 132
Chapter 5: Aggregation 135
Item 30: Understand How GROUP BY Works 135
Item 31: Keep the GROUP BY Clause Small 142
Item 32: Leverage GROUP BY/HAVING to Solve Complex Problems 145
Item 33: Find Maximum or Minimum Values Without Using GROUP BY 150
Item 34: Avoid Getting an Erroneous COUNT() When Using OUTER JOIN 156
Item 35: Include Zero-Value Rows When Testing for HAVING COUNT(x) < Some Number 159
Item 36: Use DISTINCT to Get Distinct Counts 163
Item 37: Know How to Use Window Functions 166
Item 38: Create Row Numbers and Rank a Row over
Other Rows 169
Item 39: Create a Moving Aggregate 172
Chapter 6: Subqueries 179
Item 40: Know Where You Can Use Subqueries 179
Item 41: Know the Difference between Correlated and Non-correlated Subqueries 184
Item 42: If Possible, Use Common Table Expressions Instead of Subqueries 190
Item 43: Create More Efficient Queries Using Joins Rather than Subqueries 197
Chapter 7: Getting and Analyzing Metadata 201
Item 44: Learn to Use Your System’s Query Analyzer 201
Item 45: Learn to Get Metadata about Your Database 212
Item 46: Understand How the Execution Plan Works 217
Chapter 8: Cartesian Products 227
Item 47: Produce Combinations of Rows between Two Tables and Flag Rows in the Second That Indirectly Relate to the First 227
Item 48: Understand How to Rank Rows by Equal
Quantiles 231
Item 49: Know How to Pair Rows in a Table with All Other Rows 235
Item 50: Understand How to List Categories and the Count of First, Second, or Third Preferences 240
Chapter 9: Tally Tables 247
Item 51: Use a Tally Table to Generate Null Rows Based on a Parameter 247
Item 52: Use a Tally Table and Window Functions for Sequencing 252
Item 53: Generate Multiple Rows Based on Range Values in a Tally Table 257
Item 54: Convert a Value in One Table Based on a Range of Values in a Tally Table 261
Item 55: Use a Date Table to Simplify Date Calculation 268
Item 56: Create an Appointment Calendar Table with All Dates Enumerated in a Range 275
Item 57: Pivot Data Using a Tally Table 278
Chapter 10: Modeling Hierarchical Data 285
Item 58: Use an Adjacency List Model as the Starting Point 286
Item 59: Use Nested Sets for Fast Querying Performance with Infrequent Updates 288
Item 60: Use a Materialized Path for Simple Setup and Limited Searching 291
Item 61: Use Ancestry Traversal Closure for Complex Searching 294
Appendix: Date and Time Types, Operations,
and Functions 299
IBM DB2 299
Microsoft Access 303
Microsoft SQL Server 305
MySQL 308
Oracle 313
PostgreSQL 315
Index 317

前言/序言

  SQL 在成為國際標準數據庫語言的30 餘年裏,已經在眾多數據庫産品中得以實現。現在SQL 無處不在,高性能事務處理係統、智能手機應用程序以及後端Web 接口程序中都在使用SQL 語言。甚至有一類NoSQL 數據庫,其共同特點是(或曾經是)它們不使用SQL。隨著NoSQL 數據庫增加瞭SQL 語言接口,現在NoSQL 中“No”的意思是“不僅僅是”SQL(Not Only SQL)。

  由於SQL 的普遍性,你很可能在很多産品和係統環境中都使用過SQL。有一個針對SQL 語言的詬病(也許是對的),雖然SQL 語言在不同的數據庫産品中是類似的,但還是有細微的差彆。這些差彆源於對SQL 標準的不同理解、不同開發模式或者不同的底層架構。通過實例來對比不同産品SQL 方言中的細微差彆,對於理解這些SQL 差異是非常有用的。本書為SQL 查詢提供瞭一個羅塞塔石碑(解釋古埃及象形文字的可靠綫索),嚮我們展示瞭如何使用不同的SQL 方言編寫SQL 查詢並解釋瞭SQL 方言中的差異。

  我經常強調最好的學習方法是從錯誤中學習。也就是說,那些懂得從自己和彆人的錯誤中學習的人,纔能夠獲得更多。本書包含瞭一些不完整、不正確的SQL 查詢實例,並嚮讀者解釋瞭這些SQL 不完整、不正確的原因,以此通過彆人的錯誤進行學習。

  SQL 是一種功能強大且復雜的數據庫語言。作為美國和國際SQL 標準委員會的數據庫顧問和參與者,我見過很多查詢沒有充分利用SQL 的能力。充分理解SQL 的語言能力以及復雜性的程序開發人員,不僅可以充分利用SQL 的功能構建性能良好的應用程序,還能高效地開發應用程序。本書提供瞭61 個具體實例來幫助大傢學習。

  Keith W. Hare

  JCC 谘詢有限公司高級顧問

  美國INCITS dm32.2—— SQL 標準委員會副主席

  ISO/IEC JTC1 SC32 WG3 國際SQL 標準委員會召集人

  緻謝

  一位著名的政治傢曾經說過:“撫養一個孩子需要一個村莊”。如果你曾經寫過一本書,不管是技術方麵的還是其他方麵的,你會明白把你的“孩子”變成一本成功的書需要一個偉大的團隊。

  首先,非常感謝我們的策劃編輯和項目經理Trina MacDonald。Trina 不僅纏著John 使其堅持將SQL Queries for Mere Mortals 一書打造成為Effectiue Software Development 係列叢書,還帶領著團隊度過瞭重重難關。John 組建瞭一支真正國際化的團隊來完成這本書,感謝大傢工作上的不辭辛勞,尤為感謝Tom Wickerath 在項目前後期給予的協助和技術審校。

  Trina 嚮我們推薦瞭本書的內容指導Songlin Qiu,在他的幫助下我們瞭解瞭編寫Effectiue Software Development 係列叢書的各個細節,非常感謝Songlin 給予我們的指導。Trina 精心挑選瞭龐大的技術編輯團隊,他們辛苦地審核和調試瞭我們的數百個例子,並提供瞭很多有價值的反饋。感謝負責MySQL 的Morgan Tocker 和Dave Stokes;感謝負責PostgreSQL 的Richard Broersma Jr.;感謝負責IBM DB2 和Oracle 的Craig Mullins;感謝負責Oracle 的Vivek Sharma。

  在寫書的過程中,係列叢書編輯、暢銷書Effective C++, Third Edition 的作者ScottMeyers,也參與到我們的團隊中,在如何把本書變成Effectiue Software Development 係列叢書方麵給瞭我們很多寶貴的建議。希望本書可以成為Effectiue Software Development 係列叢書的典範。

  Julie Nahil、Anna Popick 的製作團隊和Barbara Wood 幫助我們使書符閤齣版的要求。我們不能沒有你們!

  最後,非常感謝我們的傢庭忍受我們在漫長的夜晚寫稿和調試例子。他們持久的耐心值得大書特書!

  John Viescas

  法國,巴黎

  Douglas Steele

  加拿大,安大略省,聖凱瑟琳

  Ben Clothier

  美國,得剋薩斯州,康弗斯

  關於作者

  John L. Viescas 是一位有著超過45 年從業經驗的獨立數據庫顧問。他的職業生涯從係統分析師開始,為IBM 大型機係統設計大型數據庫應用。他在達拉斯的應用數據研究中心工作瞭6 年,在那裏他帶領30 多名員工負責IBM 大型計算機數據庫産品的研究、開發以及客戶支持工作。在應用



用戶評價

評分

看後在評論看後在評論

評分

很好

評分

看後在評論看後在評論

評分

很好

評分

很好

評分

很好

評分

很好

評分

很好

評分

沒想到是英文的

相關圖書

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有