本書全面系統地介紹了SQL語言各方面的基礎知識以及一些高級特性,包括SQL數據語言、SQL方案語言、數據集操作、子查詢以及內建函數與條件邏輯等內容。書中每個章節講述一個相對獨立的主題,并提供了相關示例和練習。涵蓋了市場上常用數據庫版本(MySQL 、Oracle 及Microsoft SQL Server等 )。同時針對開發基于數據庫的應用程序,以及日常的數據庫系統管理,本書都展現了大量經過實踐檢驗的方法和技巧。讀者可以通過對本書循序漸進地學習快速掌握SQL語言,也可以在實際工作中遇到問題時直接翻閱本書中的相關章節以獲取解決方案。
本書贊譽
本書的寫作團隊實至名歸,給我留下了深刻的印象,這么說并不足以表達我對本書的喜愛,應當說我被這本書震驚了。大多數關于SQL 的書只會告訴讀者如何去寫SQL,而本書則會告訴讀者為什么這樣寫;大多數關于SQL 的書會將數據庫設計與實現分開闡述,而本書則將數據庫設計的考量貫穿于SQL 的各種使用場景;大多數關于SQL 的書只會在閱覽完畢后放在書架上落灰,而本書將成為我的伴手讀物。
Roger Carlson,微軟Access MVP (19962015 年)
寫基本的SQL 很簡單,但是寫功能完備且運行高效的SQL 就沒那么容易了,尤其是對于那些有著復雜需求的關鍵業務系統。不過現在有了這本優秀的SQL 讀物,無論讀者正在使用哪種數據庫管理系統,都可以快速上手編寫高質量的SQL。
Craig S. Mullins,Mullins Consulting,Inc.,DB2 金牌顧問,IBM 數據分析師
這是一本關于SQL 的佳作。它采用深入淺出的敘述方式,使得新手也可以理解其內涵。同時,也包含了很多高級的SQL 竅門和技巧,能夠讓SQL 老手也受益匪淺。因此,這本書適合任何程度的讀者,那些對數據庫設計、管理以及SQL 編程方面有較高要求的讀者都應該閱讀這本書。
Graham Mandeno,數據庫技術顧問,微軟MVP (19962015 年)
對于關系型數據庫和基于SQL 的數據庫的設計者和開發者來說,這本書是絕佳的資源一部深入淺出的讀物,書中有豐富的示例,完美地結合了設計理論與編程實現,這些例子涵蓋了當今最常用的數據庫實現,其中包括Oracle、DB2、SQL Server、MySQL、PostgreSQL 等。本書用成熟的技術引導讀者深入學習SQL,比如在關于分層數據和統計表的講解中,包含了其內部實現,以及在使用GROUP BY、EXISTS、IN、關聯或非關聯子查詢、窗口函數、各種連接語句時的性能。此外,書中有不少獨有的有趣示例,也使得這本書在SQL 類著作中格外閃耀。
Tim Quinlan,數據庫架構師,Oracle 認證DBA
iv 本書贊譽
對于那些困在多種SQL 方言之中急需幫助的讀者來說,這本書能夠將你從一團亂麻中拉出來。本書從SQL 的各種方言中分離出公有的獨立成分,能夠讓讀者做到閱后即用。我從1992 年就開始使用各種SQL 實現,已經算是SQL 方言方面的老手了,但依舊能夠從這本書中學到不少知識。
Tom Moreau 博士,SQL Server MVP(20012012 年)
這本書在描述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 核心技術與混合云解決方案部門特邀技術專家
感謝Suzanne,永遠永遠……
John Viescas
感謝我美麗聰明的妻子Louise 在我寫這本書期間對我的無限包容!
Doug Steele
感謝Suzanne 和Harold,沒有你們的支持這本書是無法問世的!
Ben Clothier
序言
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 大型計算機數據庫產品的研究、開發以及客戶支持工作。在應用
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 Programmers Reference(Wiley,2010)一書的特約作者。他擁有微軟SQL Server 2012解決方案認證和MySQL 5認證開發者等證書。從2009年開始Ben一直是微軟的最有價值專家(MVP)。