SQL權威指南(第4版)

出版時間:2013-1  出版社:人民郵電出版社  作者:Joe Celko  頁數:652  字數:1039000  譯者:朱 巍,鐘 鳴,王 淵  
Tag標簽:無  

前言

  第4版 簡介  與之前推出的第1版、第2版以及第3版一樣,第4版也面向想要了解高級編程技巧的SQL編程人員。本書讀者需要具有一年以上實際SQL編程經驗。這并不是一本入門書,所以我希望亞馬遜網站的評論中不會出現前幾版上市時的抱怨。  本書第1版出版于十年前,并被部分SQL程序員奉為經典。在我訪問過的幾乎所有軟件公司中都能看到程序員的桌子上放著這本書。最棒的是,我發現有即時貼伸出書本;太棒了,看來他們常常要用到這本書,所以才會用即時貼當書簽。  十年間的變化層次數據庫及網絡數據庫仍然在大公司的遺留系統中運行。財富500強公司中仍存在IMS(Information Management System,信息管理系統)和傳統文件,盡管SQL工作者并不愿意承認這點。不過SQL工作者依然可以感到自豪,這十年來,基于SQL的系統取得了很大進展。現在,我們擁有了幾乎無所不包的應用程序,以及重要的、更小的數據庫。  盡管OO編程依然牢牢占據主導地位,但是在下一個十年里,函數式編程或許能夠搶占OO編程的一些空間。盡管對象以及對象關系數據庫找到了適合的市場,但仍沒有機會占據主流  地位。  2010年后,XML不再流行。從技術層面講,XML是一種用于描述數據以及將數據從某一平臺移植到另一平臺的語法,而它的支持工具也提供了搜索以及重新格式化的功能。INCITS H2(前身為ANSI X3H2數據庫標準委員會)下設了一個SQL/XML委員會,以確保XML能與其支持工具一同工作。  數據倉庫不再是只有大型企業才能使用的奢侈品。由于硬件和軟件價格的下降,中型企業現在也能使用數據倉庫了。編寫OLAP查詢與編寫OLTP查詢不同,也許需要專門寫一本講OLAP查詢的“Smarties”書。  開源數據庫做得很棒,也越來越符合標準。LAMP(Linux、 Apache、 MySQL以及Python/PHP)平臺占領了絕大多數網站。Ingres、Postgres、Firebird以及其他數據庫實現了ANSI SQL-92標準特性、大多數的SQL-99特性以及一些SQL:2003特性。  縱列數據庫(columnar database)、并行以及開放式并發機制開始出現在商業產品中,而不再局限于實驗室內。SQL標準總是在不斷改變,但并不是每一次都變得更好。標準的某些部分變得更趨于關系及集合,而其他部分則很明顯地往使用過程式思想、處理非關系型數據的方向發展,這類標準建立在文件系統模型之上。引用David McGoveran的一句話:“委員會從未見過一個不喜歡的特性。”這句話,看來說得沒錯。  ANSI/ISO SQL-92標準是一組公有的子集,通用于各類SQL產品,使這些產品能夠為人所用。事實上,幾年前美國政府將SQL-99標準描述為“仍在開發的標準”,要求聯邦政府的合同必須與SQL-92標準兼容。  在開發兼容SQL-92標準的產品時,我們可以使用FIPS-127一致性測試套件對產品進行測試,這樣所有供應商均可朝著同一個方向邁進。不過遺憾的是,克林頓政府中止了這個規定,而一致性問題又開始浮現。Whitemarsh信息系統公司董事長Michael M. Gorman曾擔任數據庫標準委員會INCITS H2秘書長二十余年,他有一篇關于一致性問題的重要論文發表在Wiscorp.com,該網站中其他關于SQL歷史中政治方面的文章也值得一讀。  今天, SQL-99是編寫在絕大多數平臺上的可移植代碼的標準。不過由于廠商支持SQL:2003特性的速度很快,我并不認為要局限于各個平臺的最小交集。  第4版的新內容  在第2版中,我曾刪除了書中的一些理論,并將這部分理論移到了Joe Celko’s Data and Databases: Concepts in Practice一書中。我找不到任何理由將這部分理論移回到第4版。由于樹及層次技術相關內容足以編成一本書,因此我將這部分知識擴展并移到Joe Celko’s Trees and Hierarchies in SQL for Smarties中。不過本書也簡單提及了樹及層次技術。  由于本書面向高級程序員,因此我將適合新手的編程技巧移到了Joe Celko’s SQL Programming Style一書中講述。本書適合那些編寫真正SQL語句的讀者,而非使用某些SQL“方言”或偽裝成SQL的原生語言的讀者。實際上,將標準SQL語言翻譯成他們所使用的SQL“方言”不會太麻煩。  我嘗試在方案中嵌入注解,以說明為什么該方案能夠生效。我希望這種方式能幫助讀者了解底層原理,以便將此原理應用到其他情形。  許多人為本書提供了素材,他們有些直接告訴我這些素材,有些則是通過新聞組提供了素材,而我無法對這些提供素材的朋友一一表示感謝,但我會盡量在他們提供的代碼后面貼上他們的名字。為了避免遺漏某些朋友,我在此列出向我提供了素材或思路的朋友名單:Aaron Bertrand、 Alejandro Mesa、 Anith Sen、 Craig Mullins (為本書的多個版本進行了校對)、 Daniel A. Morgan、 David Portas、 David Cressey、 Dawn M. Wolthuis、 Don Burleson、 Erland Sommarskog、 Itzak Ben-Gan、 John Gilson、 Knut Stolze、 Ken Henderson、 Louis Davidson、 Dan Guzman、 Hugo Kornelis、 Richard Romley、 Serge Rielau、 Steve Kass、 Tom Moreau、 Troels Arvin、 Vadim Tropashko、 Plamen Ratchev、 Gert-Jan Strik。另外,還要感謝其他為我提供了素材,而我卻忘記了名字的朋友們。  更正和補充[1]  請將所有更正、補充、建議、改進以及替代方案發給出版商或我本人,尤其是當你發現了某些更好的方法時,請一定告知。  [1]① 讀者也可免費注冊圖靈社區并為本書提交勘誤。——編者注

內容概要

  《SQL權威指南(第4版)》為SQL名著中文版,兼顧技術與實踐,全面細致介紹高級技術,致力于打造SQL編程專家。《SQL權威指南(第4版)》闡釋了數據庫設計、優化和操作的各方面內容,提供了成為SQL編程專業人士所需的技術與技巧、針對新舊挑戰性難題的優秀解決方案、專業的思考方式(以保證程序的正確性與高效性),并涉及了數據庫設計與規范化、SQL數據類型、查詢、分組、集合操作、優化等主題。另外,Joe
Celko以通俗易懂的語言敘述了一些關鍵問題,比如避免使用過多NULL的原因及查詢優化方式等。
《SQL權威指南(第4版)》適合中高級SQL編程人員學習參考。

作者簡介

  Joe Celko,世界著名的數據庫專家,曾擔任ANSl
SQL標準委員會成員達10年之久,參與了SQL-89和SQL-92標準的制定,是世界上讀者數量最多的SQL圖書作者之一。他曾撰寫過一系列專欄,并通過他的新聞組支持和推動了數據庫編程技術以及ANSl/ISO標準的發展。除本書外,他還撰寫了多部SQL經典著作,包括《SQL編程風格》、《SQL解惑》和《SQL權威指南》,上述作品的中文版均已由人民郵電出版社出版。

書籍目錄

第1章 數據庫與文件系統 
1.1 實體表 
1.2 關系表 
1.3 行與記錄 
1.4 列與字段 
1.5 模式對象 
1.6 CREATE SCHEMA語句 
第2章 事務與并發控制 
2.1 會話 
2.2 事務與ACID 
2.2.1 原子性 
2.2.2 一致性 
2.2.3 隔離性 
2.2.4 持久性 
2.3 并發控制 
2.3.1 三種現象 
2.3.2 隔離級別 
2.4 保守式并發控制 
2.5 快照隔離與樂觀式并發 
2.6 邏輯并發控制 
2.7 死鎖與活鎖 
第3章 數據庫模式對象 
3.1 CREATE SCHEMA語句 
3.2 CREATE PROCEDURE、CREATE FUNCTION以及CREATE TRIGGER語句 
3.3 CREATE DOMAIN語句 
3.4 創建序列 
3.5 創建斷言 
3.5.1 為模式級約束使用視圖 
3.5.2 為約束使用主鍵和斷言 
3.6 字符集相關結構 
3.6.1 創建字符集 
3.6.2 創建排序規則 
3.6.3 創建翻譯 
第4章 定位數據和特殊數值 
4.1 顯式的物理定位器 
4.1.1 ROWID和物理磁盤地址 
4.1.2 標識列 
4.2 生成的標識符 
4.2.1 GUID 
4.2.2 UUID 
4.3 序列生成函數 
4.4 預分配值 
4.5 特殊序列 
4.5.1 Series表 
4.5.2 素數 
4.5.3 隨機順序值 
4.5.4 其他序列 
第5章 基礎表和相關元素 
5.1 CREATE TABLE語句 
5.1.1 列約束 
5.1.2 DEFAULT子句 
5.1.3 NOT NULL約束 
5.1.4 CHECK()約束 
5.1.5 UNIQUE以及PRIMARY KEY約束 
5.1.6 REFERENCES子句 
5.2 嵌套UNIQUE約束 
5.2.1 重疊鍵 
5.2.2 單列唯一性與多列唯一性 
5.3 CREATE ASSERTION約束 
5.4 臨時表 
5.5 表操作 
5.5.1 DROP TABLE<表名> 
5.5.2 ALTER TABLE 
5.6 避免屬性分割 
5.6.1 表級屬性分割 
5.6.2 行級屬性分割 
5.7 在DDL中表現類層次關系 
5.8 顯式物理定位器 
5.9 自增列 
5.9.1 ROWID與物理磁盤地址 
5.9.2 標識列 
5.9.3 對比標識列和序列 
5.10 生成標識符 
5.10.1 行業標準的唯一標識符 
5.10.2 國防部的唯一標識符 
5.10.3 序列生成函數 
5.10.4 唯一值生成器 
5.10.5 驗證源 
5.11 關于重復行 
5.12 其他模式對象 
5.13 臨時表 
5.14 CREATE DOMAIN語句 
5.15 CREATE TRIGGER語句 
5.16 CREATE PROCEDURE語句 
5.17 DECLARE CURSOR語句 
5.17.1 如何使用游標 
5.17.2 位置更新及刪除語句 
第6章 過程式、半過程式以及聲明式編程 
6.1 軟件工程基本原理 
6.2 內聚性 
6.3 耦合度 
6.4 大跨越 
6.4.1 一個常見的錯誤 
6.4.2 一處改進 
6.5 重寫技巧 
6.5.1 數據表和生成器代碼 
6.5.2 用計算替代查找 
6.5.3 斐波那契數列 
6.6 謂詞函數 
6.7 過程化分解和邏輯分解 
6.7.1 過程式分解方案 
6.7.2 邏輯分解方案 
第7章 過程式結構 
7.1 創建過程 
7.2 創建觸發器 
7.3 游標 
7.3.1 DECLARE CURSOR語句 
7.3.2 ORDER BY子句 
7.3.3 OPEN語句 
7.3.4 FETCH語句 
7.3.5 CLOSE語句 
7.3.6 DEALLOCATE語句 
7.3.7 如何使用游標 
7.3.8 位置更新及刪除語句 
7.4 序列 
7.5 生成列 
7.6 表函數 
第8章 輔助表 
8.1 序列表 
8.1.1 對列表進行枚舉 
8.1.2 將序列映射為循環 
8.1.3 取代迭代循環 
8.2 查找輔助表 
8.2.1 簡單轉換輔助表 
8.2.2 多轉換值輔助表 
8.2.3 多參數輔助表 
8.2.4 范圍輔助表 
8.2.5 層次結構輔助表 
8.2.6 “一個真正的查找表” 
8.3 輔助函數表 
8.3.1 用輔助表求反函數 
8.3.2 用輔助函數表進行插值 
8.4 全局常量表 
8.4.1 預分配值 
8.4.2 素數 
8.4.3 斐波那契數列 
8.4.4 隨機順序值 
8.5 把過程代碼轉換成表時的注意事項 
第9章 規范化 
9.1 函數依賴和多值依賴 
9.2 第一范式(1NF) 
9.3 第二范式(2NF) 
9.4 第三范式(3NF) 
9.5 基本關鍵字范式(EKNF) 
9.6 Boyce-Codd范式(BCNF) 
9.7 第四范式(4NF) 
9.8 第五范式(5NF) 
9.9 域-鍵范式(DKNF) 
9.10 規范化的實用技巧 
9.11 鍵類型 
9.11.1 自然鍵 
9.11.2 人工鍵 
9.11.3 對外暴露的物理定位器 
9.12 非規范化的實用技巧 
第10章 SQL的數值數據 
10.1 數值類型 
10.2 數值類型的轉換 
10.2.1 數值的舍入和截斷 
10.2.2 CAST()函數 
10.3 四則運算函數 
10.4 算術運算和NULL 
10.5 值與NULL的相互轉換 
10.5.1 NULLIF()函數 
10.5.2 COALESCE()函數 
10.6 數學函數 
10.6.1 數學運算符 
10.6.2 指數函數 
10.6.3 標量函數 
10.6.4 將數值轉換為文字 
10.7 唯一值生成器 
10.7.1 存有間隙的序列 
10.7.2 預分配數值 
10.8 IP地址 
10.8.1 CHAR(39)存儲 
10.8.2 二進制存儲 
10.8.3 使用多個單獨的SMALLINT 
第11章 SQL中的時間數據類型 
11.1 關于日歷標準的說明 
11.2 SQL時間數據類型 
11.2.1 時間的內部表示 
11.2.2 日期格式標準 
11.2.3 處理時間戳 
11.2.4 處理時間 
11.2.5 時區和夏令時 
11.3 INTERVAL數據類型 
11.4 時間算術 
11.5 時間數據模型的特性 
11.5.1 為持續時間建模 
11.5.2 持續時間之間的關系 
第12章 字符數據類型 
12.1 SQL字符串問題 
12.1.1 字符串相等問題 
12.1.2 字符串排序問題 
12.1.3 字符串分組問題 
12.2 標準字符串函數 
12.3 常見的廠商擴展 
12.4 Cutter表 
12.5 嵌套替換 
第13章 NULL:SQL中的缺失數據 
13.1 空表和缺失表 
13.2 列中的缺失值 
13.3 上下文和缺失值 
13.4 比較NULL 
13.5 NULL和邏輯 
13.5.1 子查詢謂詞中的NULL 
13.5.2 邏輯值謂詞 
13.6 算術中的NULL值 
13.7 函數中的NULL值 
13.8 NULL和宿主語言 
13.9 NULL的設計忠告 
13.10 關于多NULL值的說明 
第14章 多列數據元素 
14.1 距離函數 
14.2 在SQL中存儲IPv4地址 
14.2.1 使用單個VARCHAR(15)列表示IPv4地址 
14.2.2 使用一個INTEGER列表示IPv4地址 
14.2.3 使用四個SMALLINT列表示IPv4地址 
14.3 在SQL中存儲IPv6地址 
14.4 貨幣與其他單位的轉換 
14.5 社會安全號 
14.6 有理數 
第15章 表操作 
15.1 DELETE FROM語句 
15.1.1 DELETE FROM子句 
15.1.2 WHERE子句 
15.1.3 根據輔助表中的數據執行刪除 
15.1.4 在相同表內進行刪除 
15.1.5 不用聲明引用完整性在多個表中進行刪除 
15.2 INSERT INTO語句 
15.2.1 INSERT INTO子句 
15.2.2 插入的性質 
15.2.3 批量裝載和卸載實用程序 
15.3 UPDATE語句 
15.3.1 UPDATE子句 
15.3.2 WHERE子句 
15.3.3 SET子句 
15.3.4 利用第二張表進行更新 
15.3.5 在UPDATE中使用CASE表達式 
15.4 常見廠商擴展的缺陷說明 
15.5 MERGE語句 
第16章 比較或theta操作 
16.1 數據類型轉換 
16.1.1 日期顯示格式 
16.1.2 其他顯示格式 
16.2 SQL中的行比較 
16.3 IS [NOT] DISTINCT FROM操作符 
第17章 值化謂詞 
17.1 IS NULL謂詞 
17.2 IS [NOT] {TRUE | FALSE | UNKNOWN}謂詞 
17.3 IS [NOT] NORMALIZED謂詞 
第18章 CASE表達式 
18.1 CASE表達式 
18.1.1 COALESCE()和NULLIF()函數 
18.1.2 帶GROUP BY的CASE表達式 
18.1.3 CASE、CHECK()子句和邏輯蘊涵 
18.2 子查詢表達式和常量 
18.3 Rozenshtein特征函數 
第19章 LIKE與SIMILAR TO謂詞 
19.1 使用模式的技巧 
19.2 NULL值和空字符串的謂詞結果 
19.3 LIKE并不是相等 
19.4 用聯結消除LIKE謂詞 
19.5 CASE表達式和LIKE搜索條件 
19.6 SIMILAR TO謂詞 
19.7 字符串的有關技巧 
19.7.1 字符串的字符內容 
19.7.2 搜索與聲明一個串 
19.7.3 創建字符串中的索引 
第20章 BETWEEN和OVERLAPS謂詞 
20.1 BETWEEN謂詞 
20.1.1 NULL值的結果 
20.1.2 空集的結果 
20.1.3 程序設計技巧 
20.2 OVERLAPS謂詞 
第21章 [NOT] IN()謂詞 
21.1 優化IN()謂詞 
21.2 用IN()謂詞替換OR 
21.3 NULL和IN()謂詞 
21.4 IN()謂詞和引用約束 
21.5 IN()謂詞和標量查詢 
第22章 EXISTS()謂詞 
22.1 EXISTS和NULL 
22.2 EXISTS和INNER JOIN 
22.3 NOT EXISTS和OUTER JOIN 
22.4 EXISTS()和量詞 
22.5 EXISTS()和引用約束 
22.6 EXISTS和三值邏輯 
第23章 量化子查詢謂詞 
23.1 標量子查詢比較 
23.2 量詞和缺失數據 
23.3 ALL謂詞和極值函數 
23.4 UNIQUE謂詞 
23.5 DISTINCT謂詞 
第24章 簡單SELECT語句 
24.1 SELECT語句執行順序 
24.2 單級SELECT語句 
第25章 高級SELECT語句 
25.1 關聯子查詢 
25.2 嵌入的INNER JOIN 
25.3 OUTER JOIN 
25.3.1 OUTER JOIN的一些歷史 
25.3.2 NULL和OUTER JOIN 
25.3.3 NATURAL JOIN與搜索式OUTER JOIN 
25.3.4 OUTER JOIN自聯結 
25.3.5 兩次或多次OUTER JOIN 
25.3.6 OUTER JOIN和聚合函數 
25.3.7 FULL OUTER JOIN 
25.4 UNION JOIN操作符 
25.5 標量SELECT表達式 
25.6 舊JOIN語法與新JOIN語法 
25.7 受約束的JOIN 
25.7.1 庫存和訂單 
25.7.2 穩定的婚姻 
25.7.3 將球裝入盒中 
25.8 Codd博士的T聯結 
25.8.1 Stobbs方案 
25.8.2 Pieere方案 
25.8.3 參考文獻 
第26章 虛擬表:視圖、派生表、CTE及MQT 
26.1 查詢中的視圖 
26.2 可更新視圖和只讀視圖 
26.3 視圖的類型 
26.3.1 單表投影和限制 
26.3.2 計算列 
26.3.3 轉換列 
26.3.4 分組視圖 
26.3.5 聯結視圖 
26.3.6 視圖的聯結 
26.3.7 嵌套視圖 
26.4 數據庫引擎如何處理視圖 
26.4.1 視圖列列表 
26.4.2 視圖物化 
26.4.3 內嵌文本擴展 
26.4.4 指針結構 
26.4.5 索引和視圖 
26.5 WITH CHECK OPTION子句 
26.6 刪除視圖 
26.7 視圖與臨時表的使用提示 
26.7.1 使用視圖 
26.7.2 使用臨時表 
26.7.3 用視圖扁平化表 
26.8 使用派生表 
26.8.1 FROM子句中的派生表 
26.8.2 包含VALUES構造器的派生表 
26.9 公用表表達式 
26.10 遞歸公用表表達式 
26.10.1 簡單增量 
26.10.2 簡單樹遍歷 
26.11 物化查詢表 
第27章 在查詢中分區數據 
27.1 覆蓋和分區 
27.1.1 按范圍分區 
27.1.2 單列范圍表 
27.1.3 用函數進行分區 
27.1.4 按順序分區 
27.1.5 使用窗口函數進行分區 
27.2 關系除法 
27.2.1 帶余除法 
27.2.2 精確除法 
27.2.3 性能說明 
27.2.4 Todd的除法 
27.2.5 帶JOIN的除法 
27.2.6 用集合操作符進行除法 
27.3 Romley除法 
27.4 RDBMS中的布爾表達式 
27.5 FIFO和LIFO子集 
第28章 分組操作 
28.1 GROUP BY子句 
28.2 GROUP BY和HAVING 
28.3 多層次聚合 
28.3.1 多級聚合的分組視圖 
28.3.2 多層次聚合的子查詢表達式 
28.3.3 多層聚合的CASE表達式 
28.4 在計算列上分組 
28.5 成對分組 
28.6 排序和GROUP BY 
第29章 簡單聚合函數 
29.1 COUNT()函數 
29.2 SUM()函數 
29.3 AVG()函數 
29.3.1 空組的平均數 
29.3.2 多個列上的平均值 
29.4 極值函數 
29.4.1 簡單的極值函數 
29.4.2 廣義極值函數 
29.4.3 多條件極值函數 
29.4.4 GREATEST()和LEAST()函數 
29.5 LIST()聚合函數 
29.5.1 使用遞歸CTE的LIST聚合函數 
29.5.2 交叉表的LIST()函數 
29.6 PRD()聚合函數 
29.6.1 通過表達式實現PRD()函數 
29.6.2 通過對數實現PRD()聚合函數 
29.7 位運算符聚合函數 
29.7.1 OR位運算符聚合函數 
29.7.2 AND位運算符聚合函數 
第30章 高級分組、窗口聚合以及SQL中的OLAP 
30.1 星模式 
30.2 GROUPING操作符 
30.2.1 GROUP BY GROUPING SET 
30.2.2 ROLLUP 
30.2.3 CUBE 
30.2.4 SQL的OLAP示例 
30.3 窗口子句 
30.3.1 PARTITION BY子句 
30.3.2 ORDER BY子句 
30.3.3 窗口幀子句 
30.4 窗口化聚合函數 
30.5 序號函數 
30.5.1 行號 
30.5.2 RANK()和DENSE_RANK() 
30.5.3 PERCENT_RANK()和CUME_DIST() 
30.5.4 一些示例 
30.6 廠商擴展 
30.6.1 LEAD和LAG函數 
30.6.2 FIRST和LAST函數 
30.7 一點歷史知識 
第31章 SQL中的描述性統計 
31.1 眾數 
31.2 AVG()函數 
31.3 中值 
31.3.1 中值編程問題 
31.3.2 Celko第一中值 
31.3.3 Date第二中值 
31.3.4 Murchison中值 
31.3.5 Celko第二中值 
31.3.6 Vaughan提出的應用視圖的中值 
31.3.7 使用特征函數的中值 
31.3.8 Celko第三中值 
31.3.9 Ken Henderson的中值 
31.3.10 OLAP中值 
31.4 方差和標準偏差 
31.5 平均偏差 
31.6 累積統計 
31.6.1 運行差分 
31.6.2 累積百分比 
31.6.3 序號函數 
31.6.4 五分位數和相關統計 
31.7 交叉表 
31.7.1 通過交叉聯結建立交叉表 
31.7.2 通過外聯結建立交叉表 
31.7.3 通過子查詢建立交叉表 
31.7.4 使用CASE表達式建立交叉表 
31.8 調和平均數和幾何平均數 
31.9 SQL中的多變量描述統計數據 
31.9.1 協方差 
31.9.2 皮爾森相關系數r 
31.9.3 多變量描述統計中的NULL值 
31.10 SQL:2006中的統計函數 
31.10.1 方差、標準偏差以及描述統計 
31.10.2 相關性 
31.10.3 分布函數 
第32章 子序列、區域、順串、間隙及島嶼 
32.1 查找尺寸為n的子區域 
32.2 為區域編號 
32.3 查找最大尺寸的區域 
32.4 界限查詢 
32.5 順串和序列查詢 
32.6 數列的求和 
32.7 交換和平移列表值 
32.8 壓縮一列數值 
32.9 折疊一列數值 
32.10 覆蓋 
第33章 SQL中的矩陣 
33.1 通過命名列進行訪問的數組 
33.2 通過下標列進行訪問的數組 
33.3 SQL的矩陣操作 
33.3.1 矩陣等式 
33.3.2 矩陣加法 
33.3.3 矩陣乘法 
33.3.4 矩陣轉置 
33.3.5 行排序及列排序 
33.3.6 其他矩陣操作 
33.4 將表扁平化為數組 
33.5 比較表格式中的數組 
第34章 集合操作 
34.1 UNION和UNION ALL 
34.1.1 執行順序 
34.1.2 混合使用UNION和UNION ALL操作符 
34.1.3 對同一表中的列執行UNION操作 
34.2 INTERSECT和EXCEPT 
34.2.1 沒有NULL值和重復行時的INTERSECT和EXCEPT操作 
34.2.2 存在NULL值和重復行時的INTERSECT和EXCEPT操作 
34.3 關于ALL和SELECT DISTINCT的一個說明 
34.4 相等子集和真子集 
第35章 子集 
35.1 表中的每個第n項 
35.2 從表中選取隨機行 
35.3 CONTAINS操作符 
35.3.1 真子集操作符 
35.3.2 表的相等操作 
35.4 序列間隙 
35.5 重疊區間的覆蓋問題 
35.6 選取有代表性的子集 
第36章 SQL中的樹和層次結構 
36.1 鄰接列表模型 
36.1.1 復雜約束 
36.1.2 查詢的過程遍歷 
36.1.3 更改表 
36.2 路徑枚舉模型 
36.2.1 查找子樹和節點 
36.2.2 找出層次和后代 
36.2.3 刪除節點和子樹 
36.2.4 完整性約束 
36.3 層次結構的嵌套集合模型 
36.3.1 計數特性 
36.3.2 包含特性 
36.3.3 下級節點 
36.3.4 層次聚合 
36.3.5 刪除節點和子樹 
36.3.6 將鄰接列表轉換為嵌套集合模型 
36.4 其他表現樹和層次結構的模型 
第37章 SQL中的圖 
37.1 鄰接列表模型圖 
37.1.1 SQL和鄰接列表模型 
37.1.2 路徑與CTE 
37.1.3 環狀圖 
37.1.4 鄰接矩陣模型 
37.2 分割嵌套集合模型表示的圖節點 
37.2.1 圖中的所有節點 
37.2.2 路徑端點 
37.2.3 可達節點 
37.2.4 邊 
37.2.5 入度和出度 
37.2.6 源節點、匯聚節點、孤立節點和內部節點 
37.2.7 將無環圖轉化為嵌套集合 
37.3 多邊形中的點 
37.4 圖論參考書目 
第38章 時間查詢 
38.1 時間數學 
38.2 個性化日歷 
38.3 時間序列 
38.3.1 時間序列中的間隙 
38.3.2 連續時間段 
38.3.3 相鄰事件中缺失的時間 
38.3.4 查找日期 
38.3.5 時間的起始點和結束點 
38.3.6 開始時間和結束時間 
38.4 儒略日 
38.5 其他時間函數 
38.6 星期 
38.7 在表中對時間建模 
38.8 日歷輔助表 
38.9 2000年問題 
38.9.1 零 
38.9.2 閏年 
38.9.3 千年問題 
38.9.4 舊數據中的怪異日期 
38.9.5 后果 
第39章 優化SQL 
39.1 訪問方法 
39.1.1 順序訪問 
39.1.2 索引訪問 
39.1.3 散列索引 
39.1.4 位向量索引 
39.2 如何建立索引 
39.2.1 使用簡單查詢條件 
39.2.2 簡單字符串表達式 
39.2.3 簡單時間表達式 
39.3 提供額外信息 
39.4 謹慎建立多列索引 
39.5 考察IN謂詞 
39.6 避免UNION 
39.7 聯結勝于嵌套查詢 
39.8 使用更少的語句 
39.9 避免排序 
39.10 避免交叉聯結 
39.11 了解優化器 
39.12 在模式更改后重編譯靜態SQL 
39.13 臨時表有時能帶來方便 
39.14 更新統計數據 
39.15 不要迷信較新的特性 
參考文獻 

章節摘錄

版權頁:   插圖:   DECIMAL(p,s)也可以書寫為DEC(p,S),不過SQL程序員并不使用這種縮寫形式。例如,OECIMAL(8,2)可容納數值123456.78,即8位有效數字和兩位小數。 NUMERIC和DECIMAL之間的區別非常細微:NUMERIC指定了嚴格的精度和小數部分;DECIMAL則指定嚴格的小數部分,而精度則在執行時定義為等于或大于某個特定的值。這意味著DECIMAL類型需要提供更多的位數,以進行四舍五入操作,而NUMERIC類型則不需要。大型機COBOL程序員會把NUMERIC視為COBOL的PICTURE數值類型,而把DECIMAL看做BCD類型。不過現在的個人機程序員或許看不到這些了。 近似數值由尾數和指數組成。尾數是一個帶符號數值;指數則是帶符號整數,它指定了尾數的大小。近似數有一定的精度。其精度值為一個正整數,它指定尾數中有效二進制數的位數。近似數的值是尾數乘以10為底的指數。FLOAT(p)、REAL和DOUBLE PRECISION都是近似數類型。FLOAT(p)和REAL之間稍有不同,前者的二進制精度大于或等于指定值,而后者則是在運行時定義精度。 現實世界中,REAL和DOUBLE PRECISION類型均遵循IEEE 754標準中的浮點數標準。現在幾乎沒有SQL程序員會使用FLOAT(P)類型,該類型將來也許會被標準否決。IEEE標準的數學函數被嵌入到處理器芯片中,因此其運行速度超過了軟件實現的運行速度。IEEE 754標準采用二進制表示,單精度為32位,雙精度為64位,而這些精度正好適用于個人計算機和大多數Unix和Linux平臺。 單精度數值的范圍近似為±10^—44.85~10^38.53,雙精度數值的范圍近似為±10^—323.3~10^308.3。不過,IEEE標準中的某些特殊值并未包含在SQL內。 0不能直接用上述形式表示,它被描述為擁有一個零指數部分和一個零尾數部分的特殊值。加上符號部分構成—0或+0,這使得這兩個值進行相等比較時結果為相等,但卻是不同的值。如果指數部分為0,但尾數部分不為0(否則就視為零了),那么由于二進制小數點前必須包含1,因此該值是一個非規范數值(我們也可以將某些表稱為非規范表,不過這兩處的“非規范”一詞含義不同)。這樣的數值表示為—s*0f*2—126,其中s是符號位,f是尾數部分。對于雙精度,非規范數值的格式為—s*0.f*—1022。可將0看做一種特殊的非規范數值。 “+∞”和“—∞”兩個值表示為全1的指數和全0的尾數。符號位區別正無窮大和負無窮大。使用無窮大標識某一特殊值的做法非常有用,因為這樣可使得運算在溢出情況下繼續進行。IEEE浮點標準中也對無窮大值的運算進行了定義,而SQL中則未定義這類數值。 NaN(Not a Number,非數)通常用于表示不代表數值的位配置(bit confignration)。NaN由一個全1指數和一個非0尾數的位模式表示。有兩類NaN,即QNaN(Quiet NaN,靜態非數)和SNaN(Signalling NaN,動態非數)。

媒體關注與評論

“Joe Celko的這本書無疑已經成為每一位SQL程序員案頭必備的權威指南。”“本書前幾版我都看過,Joe Celko這本書的最大特點就是,一旦你讀了開頭,就不想停下來了。”——讀者評論

編輯推薦

世界級數據庫專家Joe Celko經典力作掌握高級技術,精通SQL編程的不二之選揭示SQL標準背后鮮為人知的理論與實踐考量

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    SQL權威指南(第4版) PDF格式下載



用戶評論 (總計39條)

 
 

  •     sql權威專家寫的書,內容很全面,質量也很好,值得購買
  •     經典著作,適合高級SQL開發人員閱讀
  •     學習SQL Server必備之選
  •     沒怎么看 感覺和ms sql 沒什么關聯。是理論方面的知識比較多。看看還成
  •     權威的書籍。質量很好。
  •     經典的書籍,要認真的研讀!
  •     剛開了前兩章,的確是經典
  •     書的內容很不錯!翻了一下,很適合自己!
  •     內容很詳細,講的也全面
  •     比較實用!推薦使用
  •     先生買的,說非常不錯,很全面
  •     可能是因為過年吧,快遞送的有點晚。書本身的內容和質量還是不錯的
  •     最好有實際的經驗再看這本書
  •     收到貨了,很好,我很喜歡
  •     好書不用多說,只要看作者就可以了
  •     剛收到,還沒有看,但感覺應該 不錯
  •     不錯 是一笨好書
  •     送貨速度快,書也非常好,滿意
  •     沒看 這書要慢慢看吧 以后有用的時候看
  •     在書店看到才網上買的,網上下載的電子書是英文的,看起來費力,還是買中文的好理解。
  •     書不錯,參考書必備。
  •     第一眼我喜歡這本書,從封面上看。翻看目錄看了下,個人覺得還好,這本書包括的很全面,作為一個SQL標準,它沒有會說SQL Server 權威指南,沒有說Oracle權威指南,沒有說DB2權威指南。適合中高級的程序員,書中這樣說。
  •     作為工具書的經典,個人認為應該是手頭常備的。這本書不僅適合SQL Server,而且適合Oracel等數據庫,換句話說,通過該書寫的代碼,可以很輕松移植到不同的數據庫。推薦
  •     數據庫是現在大量數據管理,必不可少的.所以想成為一個好的軟件工程師就必須經過數據庫的修行.
  •     說權威有些托大了,官方都沒出呢,你算老幾
  •     東西很好,送貨很快,這本書的內容很充實詳盡,感覺難度有點大!
  •     同事推薦的,果真不錯!送貨出貨也快!
  •     書還行 做的真不敢恭維
  •     翻譯得比較差,內容比較虛,學不到什么有用的,不推薦
  •     聽很網友推薦這本書, 并且我也知道這本書的作者是個大牛. 但不得不吐槽的是, 這本書的翻譯真是太屎了~~!! 很多術語的翻譯都非常規, 而且句子讓人讀起來相當的難受. 讓我有不小的失望, 但是沒辦法,還是得接著看, 唉.
  •     這本書,不是寫給初學者看的,得有一定基礎才能看得明白。應該說是SQL方面權威之選吧,內容深入,詳細,全面,對提升SQL編程能力、理解SQL本質有很大的幫助。我現在只看了前幾章,看著有點困難,但是收獲還是蠻多的。個人覺得,對于想進一步提高自身的人員,非常值得一讀。
  •     翻譯的真是不敢恭維~一句話要讀七八遍才能明白他說的是什么。。。。
  •     果然是權威書籍,內容很全。SQL設計各方面細節都寫了,知其然也要知其所以然,好!
  •     剛剛拿到,紙張很次,像盜版的!看了一點,翻譯相當垃圾,都想罵人!語句翻譯的都不通順,真行啊!
  •     英文原版圖書書名本來是《高級SQL編程》,為什么中文書名要翻譯成《SQL權威指南》呢?可能是出版社和譯者為了提升銷量故意這樣翻譯吧。感覺這樣很容易對顧客形成誤導。我不喜歡這樣的翻譯。
  •     可能我的基礎不太好吧,看起來還是有點費勁
  •     初學者絕對看不懂,看的懂也是一知半懂,進階者完全沒必要看,垃圾書中的戰斗機,買了就后悔了,不過亞馬遜發貨速度挺快的
  •     看SQL的高級應用來著
  •     一點都不權威錯誤太多了
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

第一圖書網(tushu007.com) @ 2017

全年永久头数公式规律