TOP
GOGO開學趣,參考書應有盡有
SQL與關聯式數據庫理論:如何編寫健壯的SQL代碼(原書第2版)(簡體書)
滿額折

SQL與關聯式數據庫理論:如何編寫健壯的SQL代碼(原書第2版)(簡體書)

商品資訊

人民幣定價:129 元
定價
:NT$ 774 元
優惠價
87673
絕版無法訂購
商品簡介
作者簡介
名人/編輯推薦
目次
書摘/試閱

商品簡介

對于數據庫管理與開發人員來說,使用SQL時會到處遭遇困難和陷阱。只有深入理解關系理論,并將理論應用于實踐,才能避免這些困難和陷阱。本書作者深入闡述了關系理論,以嚴謹的態度對SQL與關系理論進行詳盡而深入的對比、討論和思考,并且使用大量示例和練習展示怎樣才能將關系理論正確地應用到SQL中,得到健壯的SQL代碼,為高級數據庫開發人員提供大量常見SQL問題的解決之道。
本書回答了如下問題:
為什么恰當的列命名非常重要?
數據庫中的null會讓你得到錯誤的答案。為什么?你又能做什么?
是否可以通過編寫一個SQL查詢找到在同一個部門每次任職都不足6個月的員工?
雖然SQL支持“量化比較”,但是最好不要使用。為什么?怎樣避免使用?
雖然約束至關重要,但大多數SQL產品都沒有恰當地對其提供支持。怎樣解決此種境況?
關系模型是在40多年前提出的,自那以后,數據庫理論和實踐一直在發展,本書作者利用數十年的研究給出了最新的SQL理論。

作者簡介

C.J.Date 是關系數據庫技術領域中非常著名的獨立撰稿人、講師、學者和顧問。他最著名的著作是《數據庫系統導論》,這本書已經銷售了大約85萬冊,并被世界范圍內的幾百所大學作為教材采用。他同時也是許多數據庫管理書籍的作者,包括國內引進出版的下列作品:《數據庫設計與關系理論》、《數據庫、類型和關系模型》和《深度探索關系數據庫:實踐者的關系理論》等。Date先生于2004年被選入計算行業名人堂(the Computing Industry Hall of Fame)。他因具有一流的將復雜的技術專題用一種清晰且很容易理解的方式加以解釋的能力而享有盛譽。

名人/編輯推薦

關系數據庫領域的經典之作,關系數據領域泰斗級人物40年經驗的結晶!

目次

第1版前言
第2版前言
第1章 做好準備
1.1 關系模型被嚴重地誤解了
1.2 關于術語的一些說明
1.3 原理而非產品
1.4 原始模型回顧
1.5 模型vs.實現
1.6 關系的性質
1.7 基關系vs.導出關系
1.8 關系vs.關系變量
1.9 值vs.變量
1.10 小結
1.11 練習題
第2章 類型和域

1版前言

2版前言

1章 做好準備

1.1 關系模型被嚴重地誤解了

1.2 關于術語的一些說明

1.3 原理而非產品

1.4 原始模型回顧

1.5 模型vs.實現

1.6 關系的性質

1.7 基關系vs.導出關系

1.8 關系vs.關系變量

1.9 vs.變量

1.10 小結

1.11 練習題

2章 類型和域

2.1 類型和關系

2.2 相等性比較

2.3 數據值原子性

2.4 類型是什么

2.5 標量類型vs.非標量類型

2.6 SQL中的標量類型

2.7 SQL中的類型檢查和型轉

2.8 SQL中的字符序

2.9 SQL中的行類型和表類型

2.10 小結

2.11 練習題

3章 元組、關系、行、表

3.1 元組是什么

3.2 SQL中的行

3.3 關系是什么

3.4 關系及其主體

3.5 關系是n維的

3.6 關系比較

3.7 TABLE_DUMTABLE_DEE

3.8 SQL中的表

3.9 SQL中的列命名

3.10 小結

3.11 練習題

4章 不要重復,不要null

4.1 重復有什么問題

4.2 重復:深入討論

4.3 SQL中避免重復

4.4 null有什么毛病

4.5 SQL中避免null

4.6 對外連接的說明

4.7 小結

4.8 練習題

5章 基關系變量和基表

5.1 更新是集合級別的

5.2 關系賦值

5.3 關于候選鍵的更多內容

5.4 關于外鍵的更多內容

5.5 關系變量和謂詞

5.6 關系 vs. 類型

5.7 練習題

6 SQL和關系代數I:原始運算符

6.1 一些預備知識

6.2 關于閉包的更多內容

6.3 限制

6.4 投影

6.5 連接

6.6 并、交和差

6.7 哪些運算符是基本運算符

6.8 逐步形成表達式

6.9 關系表達式到底表示什么

6.10 計算SQL表表達式

6.11 表達式變換

6.12 屬性名依賴

6.13 練習題

7 SQL和關系代數II:附加運算符

7.1 排他并

7.2 半連接和半差

7.3 擴展

7.4 映像關系

7.5

7.6 聚集運算符

7.7 再議映像關系

7.8 匯總

7.9 再議匯總

7.10 分組、去分組和關系值屬性

7.11WHAT IF”查詢

7.12 對于遞歸的說明

7.13 ORDER BY是怎么回事

7.13 練習題

8 SQL與約束

8.1 類型約束

8.2 SQL中的類型約束

8.3 數據庫約束

8.4 SQL中的數據庫約束

8.5 事務

8.6 數據庫約束為什么必須立即檢查

8.7 不是有些檢查必須延遲進行嗎

8.8 約束與謂詞

8.9 各種問題

8.10 練習題

9 SQL與視圖

9.1 視圖是關系變量

9.2 視圖和謂詞

9.3 檢索運算

9.4 視圖和約束

9.5 更新運算

9.6 視圖的作用

9.7 視圖和快照

9.8 練習題

10 SQL與邏輯

10.1 為什么需要邏輯

10.2 簡單命題和復合命題

10.3 簡單謂詞和復合謂詞

10.4 量詞化

10.5 關系演算

10.6 關于量詞化的更多內容

10.7 一些等價關系

10.8 小結

10.9 練習題

11章 使用邏輯表述SQL表達式

11.1 一些變換法則

11.2 1:邏輯蘊涵

11.3 2:全稱量詞化

11.4 3:蘊涵和全稱量詞化

11.5 4:相關子查詢

11.6 5:命名子表達式

11.7 6:關于命名子表達式的更多內容

11.8 7:處理模糊性

11.9 8:使用COUNT

11.10 9:連接查詢

11.11 10:唯一量詞化

11.12 11ALLANY比較

11.13 12GROUP BYHAVING

11.14 練習題

12章 關于SQL的其他主題

12.1 SELECT *

12.2 顯式表

12.3 名稱限定

12.4 區間變元

12.5 子查詢

12.6 “可能非確定性”表達式

12.7 空集合

12.8 簡化的BNF語法

12.9 練習題

附錄A 關系模型

附錄B SQL背離關系模型之處

附錄C 處理信息丟失的關系方法

附錄D Tutorial D語法

附錄E 本書建議匯總

附錄F 練習答案

附錄G 深入閱讀建議

 


顯示全部信息

書摘/試閱

第1章
做好準備
My soul, sit thou a patient looker-on;
Judge not the play before the play is done;
Her plot hath many changes; every day
Speaks a new scene; the last act crowns the play.
——Francis Quarles: Emblems (1635)
SQL的關系化方法是本書的主題,或主題之一。當然,如果要充分地探討這個問題,僅僅探討SQL本身的內容是不夠的,還需要涉及關系理論的相關內容。盡管這一說明顯然適用于全書,但它特別適用于這第1章。所以,相對而言,本章只有很少的部分來講述關于SQL的內容。我所要做的就是回顧(在大多數情況下希望你無論如何也要掌握的)背景知識。之所以這樣做是因為,要建立一個起始點,或者說是為書中的后續內容奠定基礎。不過,就算如我所愿,你已經熟悉了本章內容,我也誠摯地建議你不要略過本章。你應該知道你需要知道的一切(如果你能夠了解我的用意的話);尤其是,你需要確定自己具有理解本書后續章節內容的所有預備知識。事實上,我建議你在全書中都不要因為自以為熟悉某個主題而略過對該主題的討論。比方說,你真的絕對確定自己知道關系理論術語 “鍵”(Key)或者“連接”(join)注1指的是什么嗎?
1.1 關系模型被嚴重地誤解了
任何學科的專業人士都需要知道自己所在專業的基礎。所以,如果你是數據庫領域的專家,就需要知道關系模型,因為它是數據庫領域的基礎(至少是基礎的主體)。當今,不論是商業化的應用培訓還是學術化的理論課程,任何課程都至少提到關系模型的內容,但是大多數教學從結果上看都很糟。可以確定的是,數據庫領域中的大多數人并沒有很好地理解關系模型。造成這種情形的可能原因包括:
脫離實踐的關系模型教學。就是說,至少對于初學者,理解關系模型知識的關聯性或關系模型所要解決的問題是很難的。
授課的教師本身并沒有充分理解或意識到關系模型知識內容的重要性。
在實踐中更可能存在的問題:就根本沒教關系模型,授課中取而代之的是SQL語言,或者SQL語言的一些方言(比如Oracle的SQL方言)。
所以這本書的目標讀者就是那些數據庫實踐人員,他們接觸過關系模型,但仍然缺乏本應具有的全部知識(尤其是SQL實踐人員)。這本書絕不是針對初學者而寫的;不過,它也不是一個進修課程。具體而言,我可以確定你確實知道一些關于SQL的知識,但是請容我在此冒昧地說一句,如果你關于關系模型的知識僅僅來源于你所掌握的SQL知識,那么恐怕你并很好地理解關系模型,而且你所知道的還有可能是錯的。我認為:SQL和關系模型不是一回事。這一點怎么強調都不過分不夸張地說,下面是一些SQL并不十分明確的關系化問題(下面的列表并不是全部的列表):
數據庫、關系及元組的確切含義;
關系值和關系變量的區別;
謂詞和命題的關聯性;
屬性名稱的重要性;
完整性約束的關鍵角色;
信息原理及其重要性。
所有這些問題以及其他很多問題,都在這本書中進行了闡述。
我再說一遍:如果你對于關系模型的知識僅僅來源于你對于SQL的知識,那么你所知道的有可能是錯的。所以,你在閱讀本書過程中可能會得到一個結論:你不得不進行一些反學習(unlearning,即把以前學習到的錯誤知識忘掉并重新學習正確的知識,避免以前的錯誤知識產生不利影響——譯者注)。不幸的是,反學習是非常困難的。
1.2 關于術語的一些說明
在1.1節的關系化問題列表中,你可能意識到我使用了形式化術語“關系”(relation)、“元組”(tuple)及“屬性”(attribute)。SQL當然不使用這些術語,取而代之的是更“用戶友好的”術語:“表”(table),“行”(row),“列”(column)。只要有助于使知識更易于理解,我通常都會贊同使用更“用戶友好的”術語。然而,就當前的情況而言,我(遺憾地)認為它們沒有使知識更易于理解,而是曲解了知識并實際上損害了真正理解的形成。真相是,關系并不是表,元組并不是行而屬性也并不是列。盡管在某些非正式上下文中對術語的曲解(即關系是表,元組是行而屬性是列——譯者注)是可被接受的(事實上我自己也經常如此),但是我要說:只有當我們全都理解“用戶友好的”術語只是對于真相的近似而不能抓住事實本質時,它才是可接受的。換個說法:如果你確實理解真實情況,那么合理地使用“用戶友好的”術語是一個不錯的想法,但是如果以學習和領會真實情況為第一要義的話,你需要使用正式的術語。因此,在這本書中,我將會使用正式用語(至少在我講述與SQL相對的關系模型時會是如此),并在合適的時機為這些正式術語給出精確定義。相反,在SQL上下文中,我會使用SQL的專用術語。
關于術語的另外一點是:盡管我已經說過SQL試圖簡化一個術語集合,但我必須強調的是,它使另外一個術語集合復雜起來。我指的是SQL對于術語“運算符”(operator)、“函數”(function)、“過程”(procedure)、 “程序”(routine)和“方法”(method)的使用,所有這些本質上代表同一個事物(即使有差別也微乎其微)。在這本書中我會全程使用術語“運算符”;比如,我會明確地將“=”(等值比較)、“:=”(賦值)、“+”(加)、DISTINCT、JOIN、SUM和GROUP BY(等等)都稱作運算符。
需要注意的是,說到SQL,請允許我提醒你(如前言所述):除非是在極為有限的幾個上下文中,否則本書中的SQL指的都是標準版本的SQL語言。注2
然而:
標準所用的術語有時并不適合使用。此時,我一般會使用我自己的術語。比如,我會使用“表表達式”(table expression)代替SQL標準中的術語“查詢表達式”(query expression),這是因為:首先,這種表達式表示的值實際是表而不是查詢;其次,查詢并不是使用這種表達式涉及的唯一上下文(事實上,SQL標準中確實使用了術語“表表達式”,但是用的很不恰當;具體來說, “表表達式”在標準中用來指代SELECT表達式中SELECT子句后面的部分)。
緊接著上一點,(不論是從我的觀點還是從標準的觀點出發)在SQL中并不是所有的“表表達式”在其本應合法的所有上下文中都是合法的。尤其是,盡管一個顯式JOIN調用肯定表示一個表,但它不能作為獨立的(stand alone)表表達式出現(即,不能獨自出現在嵌套查詢中的最外層),也不能作為構成子查詢的括號內部表表達式出現(參見第12章)注3。請注意,這些說明適用于書中很多單獨的討論,但不斷地重復這些說明是很乏味的,我也不會那么做(不過,在第12章的BNF語法部分我會再次提及它們)。
我忽略了SQL標準中被認為是晦澀難懂的部分,尤其是那些不是SQL標準所謂的核心SQL部分或是與關系化處理本身無緊密聯系的部分。這些內容的具體例子包括:分析或窗口(OLAP)函數,動態SQL,臨時表,以及用戶自定義類型的細節。
出于某些原因,我使用了不同于SQL標準的注釋風格。具體來說,我使用由“/*”及“*/”分隔符包圍的斜體字符串來顯示注釋。

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 673
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區