本書全面系統(tǒng)地介紹了SQL語言各方面的基礎(chǔ)知識以及一些高級特性,包括SQL數(shù)據(jù)語言、SQL方案語言、數(shù)據(jù)集操作、子查詢以及內(nèi)建函數(shù)與條件邏輯等內(nèi)容。書中每個章節(jié)講述一個相對獨(dú)立的主題,并提供了相關(guān)示例和練習(xí)。涵蓋了市場上常用數(shù)據(jù)庫版本(MySQL 、Oracle 及Microsoft SQL Server等 )。同時針對開發(fā)基于數(shù)據(jù)庫的應(yīng)用程序,以及日常的數(shù)據(jù)庫系統(tǒng)管理,本書都展現(xiàn)了大量經(jīng)過實(shí)踐檢驗的方法和技巧。讀者可以通過對本書循序漸進(jìn)地學(xué)習(xí)快速掌握SQL語言,也可以在實(shí)際工作中遇到問題時直接翻閱本書中的相關(guān)章節(jié)以獲取解決方案。
本書贊譽(yù)
本書的寫作團(tuán)隊實(shí)至名歸,給我留下了深刻的印象,這么說并不足以表達(dá)我對本書的喜愛,應(yīng)當(dāng)說我被這本書震驚了。大多數(shù)關(guān)于SQL 的書只會告訴讀者如何去寫SQL,而本書則會告訴讀者為什么這樣寫;大多數(shù)關(guān)于SQL 的書會將數(shù)據(jù)庫設(shè)計與實(shí)現(xiàn)分開闡述,而本書則將數(shù)據(jù)庫設(shè)計的考量貫穿于SQL 的各種使用場景;大多數(shù)關(guān)于SQL 的書只會在閱覽完畢后放在書架上落灰,而本書將成為我的伴手讀物。
Roger Carlson,微軟Access MVP (19962015 年)
寫基本的SQL 很簡單,但是寫功能完備且運(yùn)行高效的SQL 就沒那么容易了,尤其是對于那些有著復(fù)雜需求的關(guān)鍵業(yè)務(wù)系統(tǒng)。不過現(xiàn)在有了這本優(yōu)秀的SQL 讀物,無論讀者正在使用哪種數(shù)據(jù)庫管理系統(tǒng),都可以快速上手編寫高質(zhì)量的SQL。
Craig S. Mullins,Mullins Consulting,Inc.,DB2 金牌顧問,IBM 數(shù)據(jù)分析師
這是一本關(guān)于SQL 的佳作。它采用深入淺出的敘述方式,使得新手也可以理解其內(nèi)涵。同時,也包含了很多高級的SQL 竅門和技巧,能夠讓SQL 老手也受益匪淺。因此,這本書適合任何程度的讀者,那些對數(shù)據(jù)庫設(shè)計、管理以及SQL 編程方面有較高要求的讀者都應(yīng)該閱讀這本書。
Graham Mandeno,數(shù)據(jù)庫技術(shù)顧問,微軟MVP (19962015 年)
對于關(guān)系型數(shù)據(jù)庫和基于SQL 的數(shù)據(jù)庫的設(shè)計者和開發(fā)者來說,這本書是絕佳的資源一部深入淺出的讀物,書中有豐富的示例,完美地結(jié)合了設(shè)計理論與編程實(shí)現(xiàn),這些例子涵蓋了當(dāng)今最常用的數(shù)據(jù)庫實(shí)現(xiàn),其中包括Oracle、DB2、SQL Server、MySQL、PostgreSQL 等。本書用成熟的技術(shù)引導(dǎo)讀者深入學(xué)習(xí)SQL,比如在關(guān)于分層數(shù)據(jù)和統(tǒng)計表的講解中,包含了其內(nèi)部實(shí)現(xiàn),以及在使用GROUP BY、EXISTS、IN、關(guān)聯(lián)或非關(guān)聯(lián)子查詢、窗口函數(shù)、各種連接語句時的性能。此外,書中有不少獨(dú)有的有趣示例,也使得這本書在SQL 類著作中格外閃耀。
Tim Quinlan,數(shù)據(jù)庫架構(gòu)師,Oracle 認(rèn)證DBA
iv 本書贊譽(yù)
對于那些困在多種SQL 方言之中急需幫助的讀者來說,這本書能夠?qū)⒛銖囊粓F(tuán)亂麻中拉出來。本書從SQL 的各種方言中分離出公有的獨(dú)立成分,能夠讓讀者做到閱后即用。我從1992 年就開始使用各種SQL 實(shí)現(xiàn),已經(jīng)算是SQL 方言方面的老手了,但依舊能夠從這本書中學(xué)到不少知識。
Tom Moreau 博士,SQL Server MVP(20012012 年)
這本書在描述SQL 的使用方面完美地做到了內(nèi)容豐富、敘述簡潔、易于理解
它通過展現(xiàn)如何使用SQL 解決現(xiàn)實(shí)世界中的需求問題來告訴讀者構(gòu)造SQL 查詢的方法,并闡明了數(shù)據(jù)如何存儲與數(shù)據(jù)如何查詢之間的聯(lián)系,解釋了從數(shù)據(jù)庫中準(zhǔn)確且高效地取得結(jié)果集的全過程。
Kenneth D. Snell 博士,數(shù)據(jù)庫技術(shù)顧問,前微軟Access MVP
這本書填補(bǔ)了一個知識斷檔
新手DBA 如何成長為高級DBA
本書就像是成長過程的路線圖、行動指南、羅塞塔石碑,幫助讀者從基礎(chǔ)SQL 應(yīng)用者變?yōu)楦唠A使用者的教練。與其磕磕絆絆地重新發(fā)明輪子,或是迷迷糊糊地摸索數(shù)據(jù)庫的正確使用方法,不如對自己好一點(diǎn)
把這本書帶回家。你不僅能夠了解到可能需要多年摸索才能見到的各種SQL 的實(shí)現(xiàn)技巧,還能深入理解數(shù)據(jù)庫供應(yīng)商各種實(shí)現(xiàn)的原因。在你學(xué)習(xí)SQL 的旅途中,這本書能夠為你節(jié)省出很多時間和精力。
Dave Stokes,MySQL 社區(qū)管理員,就職于甲骨文公司
對于一個嚴(yán)肅的數(shù)據(jù)庫開發(fā)人員,本書屬于必讀書目。它手把手地告訴讀者,SQL 解決現(xiàn)實(shí)問題的強(qiáng)大能力。本書的作者們使用了淺顯易懂的表達(dá)方式告訴讀者每一種解決方案的利與弊。我們都知道,一個查詢有很多種實(shí)現(xiàn)方式,而這本書將告訴讀者為什么某一種實(shí)現(xiàn)比別的實(shí)現(xiàn)更高效。對于這本書,我最鐘愛的部分莫過于每一章最后的總結(jié),它會再次向讀者強(qiáng)調(diào)要點(diǎn)與陷阱。我要向所有的數(shù)據(jù)庫開發(fā)人員推薦這本書。
Leo(theDBguyTM),UtterAccess 社區(qū)主席,微軟Access MVP
我認(rèn)為這本書不僅適合開發(fā)人員,而且適合數(shù)據(jù)庫管理員,它能夠告訴讀者,在實(shí)現(xiàn)一個特定需求時,如何通過多種方式編寫高效的SQL 實(shí)現(xiàn)。我認(rèn)為,這是一本數(shù)據(jù)庫相關(guān)從業(yè)人員的必讀書。推薦這本書的另一個理由,是它涵蓋了幾乎所有常見的RDBMS 應(yīng)用場景,因此,對于那些需要將一種RDBMS 實(shí)現(xiàn)方言翻譯為另一種方言的用戶,本書就是你們要找的那本指南。我衷心祝賀本書的作者們,你們的作品無與倫比。
Vivek Sharma,甲骨文公司Oracle 核心技術(shù)與混合云解決方案部門特邀技術(shù)專家
感謝Suzanne,永遠(yuǎn)永遠(yuǎn)……
John Viescas
感謝我美麗聰明的妻子Louise 在我寫這本書期間對我的無限包容!
Doug Steele
感謝Suzanne 和Harold,沒有你們的支持這本書是無法問世的!
Ben Clothier
序言
SQL 在成為國際標(biāo)準(zhǔn)數(shù)據(jù)庫語言的30 余年里,已經(jīng)在眾多數(shù)據(jù)庫產(chǎn)品中得以實(shí)現(xiàn),F(xiàn)在SQL 無處不在,高性能事務(wù)處理系統(tǒng)、智能手機(jī)應(yīng)用程序以及后端Web 接口程序中都在使用SQL 語言。甚至有一類NoSQL 數(shù)據(jù)庫,其共同特點(diǎn)是(或曾經(jīng)是)它們不使用SQL。隨著NoSQL 數(shù)據(jù)庫增加了SQL 語言接口,現(xiàn)在NoSQL 中No的意思是不僅僅是SQL(Not Only SQL)。
由于SQL 的普遍性,你很可能在很多產(chǎn)品和系統(tǒng)環(huán)境中都使用過SQL。有一個針對SQL 語言的詬。ㄒ苍S是對的),雖然SQL 語言在不同的數(shù)據(jù)庫產(chǎn)品中是類似的,但還是有細(xì)微的差別。這些差別源于對SQL 標(biāo)準(zhǔn)的不同理解、不同開發(fā)模式或者不同的底層架構(gòu)。通過實(shí)例來對比不同產(chǎn)品SQL 方言中的細(xì)微差別,對于理解這些SQL 差異是非常有用的。本書為SQL 查詢提供了一個羅塞塔石碑(解釋古埃及象形文字的可靠線索),向我們展示了如何使用不同的SQL 方言編寫SQL 查詢并解釋了SQL 方言中的差異。
我經(jīng)常強(qiáng)調(diào)最好的學(xué)習(xí)方法是從錯誤中學(xué)習(xí)。也就是說,那些懂得從自己和別人的錯誤中學(xué)習(xí)的人,才能夠獲得更多。本書包含了一些不完整、不正確的SQL 查詢實(shí)例,并向讀者解釋了這些SQL 不完整、不正確的原因,以此通過別人的錯誤進(jìn)行學(xué)習(xí)。
SQL 是一種功能強(qiáng)大且復(fù)雜的數(shù)據(jù)庫語言。作為美國和國際SQL 標(biāo)準(zhǔn)委員會的數(shù)據(jù)庫顧問和參與者,我見過很多查詢沒有充分利用SQL 的能力。充分理解SQL 的語言能力以及復(fù)雜性的程序開發(fā)人員,不僅可以充分利用SQL 的功能構(gòu)建性能良好的應(yīng)用程序,還能高效地開發(fā)應(yīng)用程序。本書提供了61 個具體實(shí)例來幫助大家學(xué)習(xí)。
Keith W. Hare
JCC 咨詢有限公司高級顧問
美國INCITS dm32.2 SQL 標(biāo)準(zhǔn)委員會副主席
ISO/IEC JTC1 SC32 WG3 國際SQL 標(biāo)準(zhǔn)委員會召集人
致謝
一位著名的政治家曾經(jīng)說過:撫養(yǎng)一個孩子需要一個村莊。如果你曾經(jīng)寫過一本書,不管是技術(shù)方面的還是其他方面的,你會明白把你的孩子變成一本成功的書需要一個偉大的團(tuán)隊。
首先,非常感謝我們的策劃編輯和項目經(jīng)理Trina MacDonald。Trina 不僅纏著John 使其堅持將SQL Queries for Mere Mortals 一書打造成為Effectiue
Software Development 系列叢書,還帶領(lǐng)著團(tuán)隊度過了重重難關(guān)。John 組建了一支真正國際化的團(tuán)隊來完成這本書,感謝大家工作上的不辭辛勞,尤為感謝Tom Wickerath 在項目前后期給予的協(xié)助和技術(shù)審校。
Trina 向我們推薦了本書的內(nèi)容指導(dǎo)Songlin Qiu,在他的幫助下我們了解了編寫Effectiue Software Development 系列叢書的各個細(xì)節(jié),非常感謝Songlin
給予我們的指導(dǎo)。Trina 精心挑選了龐大的技術(shù)編輯團(tuán)隊,他們辛苦地審核和調(diào)試了我們的數(shù)百個例子,并提供了很多有價值的反饋。感謝負(fù)責(zé)MySQL 的Morgan Tocker 和Dave Stokes;感謝負(fù)責(zé)PostgreSQL 的Richard Broersma Jr.;感謝負(fù)責(zé)IBM DB2 和Oracle 的Craig Mullins;感謝負(fù)責(zé)Oracle 的Vivek Sharma。
在寫書的過程中,系列叢書編輯、暢銷書Effective C , Third Edition 的作者ScottMeyers,也參與到我們的團(tuán)隊中,在如何把本書變成Effectiue Software Development 系列叢書方面給了我們很多寶貴的建議。希望本書可以成為Effectiue Software Development 系列叢書的典范。
Julie Nahil、Anna Popick 的制作團(tuán)隊和Barbara Wood 幫助我們使書符合出版的要求。我們不能沒有你們!
最后,非常感謝我們的家庭忍受我們在漫長的夜晚寫稿和調(diào)試?yán)。他們持久的耐心值得大書特書?/p>
John Viescas
法國,巴黎
Douglas Steele
加拿大,安大略省,圣凱瑟琳
Ben Clothier
美國,得克薩斯州,康弗斯
關(guān)于作者
John L. Viescas 是一位有著超過45 年從業(yè)經(jīng)驗的獨(dú)立數(shù)據(jù)庫顧問。他的職業(yè)生涯從系統(tǒng)分析師開始,為IBM 大型機(jī)系統(tǒng)設(shè)計大型數(shù)據(jù)庫應(yīng)用。他在達(dá)拉斯的應(yīng)用數(shù)據(jù)研究中心工作了6 年,在那里他帶領(lǐng)30 多名員工負(fù)責(zé)IBM 大型計算機(jī)數(shù)據(jù)庫產(chǎn)品的研究、開發(fā)以及客戶支持工作。在應(yīng)用