出版時(shí)間:2013-1 出版社:人民郵電出版社 作者:Joe Celko 頁數(shù):652 字?jǐn)?shù):1039000 譯者:朱 巍,鐘 鳴,王 淵
Tag標(biāo)簽:無
前言
第4版 簡介 與之前推出的第1版、第2版以及第3版一樣,第4版也面向想要了解高級(jí)編程技巧的SQL編程人員。本書讀者需要具有一年以上實(shí)際SQL編程經(jīng)驗(yàn)。這并不是一本入門書,所以我希望亞馬遜網(wǎng)站的評(píng)論中不會(huì)出現(xiàn)前幾版上市時(shí)的抱怨。 本書第1版出版于十年前,并被部分SQL程序員奉為經(jīng)典。在我訪問過的幾乎所有軟件公司中都能看到程序員的桌子上放著這本書。最棒的是,我發(fā)現(xiàn)有即時(shí)貼伸出書本;太棒了,看來他們常常要用到這本書,所以才會(huì)用即時(shí)貼當(dāng)書簽?! ∈觊g的變化層次數(shù)據(jù)庫及網(wǎng)絡(luò)數(shù)據(jù)庫仍然在大公司的遺留系統(tǒng)中運(yùn)行。財(cái)富500強(qiáng)公司中仍存在IMS(Information Management System,信息管理系統(tǒng))和傳統(tǒng)文件,盡管SQL工作者并不愿意承認(rèn)這點(diǎn)。不過SQL工作者依然可以感到自豪,這十年來,基于SQL的系統(tǒng)取得了很大進(jìn)展。現(xiàn)在,我們擁有了幾乎無所不包的應(yīng)用程序,以及重要的、更小的數(shù)據(jù)庫。 盡管OO編程依然牢牢占據(jù)主導(dǎo)地位,但是在下一個(gè)十年里,函數(shù)式編程或許能夠搶占OO編程的一些空間。盡管對(duì)象以及對(duì)象關(guān)系數(shù)據(jù)庫找到了適合的市場,但仍沒有機(jī)會(huì)占據(jù)主流 地位?! ?010年后,XML不再流行。從技術(shù)層面講,XML是一種用于描述數(shù)據(jù)以及將數(shù)據(jù)從某一平臺(tái)移植到另一平臺(tái)的語法,而它的支持工具也提供了搜索以及重新格式化的功能。INCITS H2(前身為ANSI X3H2數(shù)據(jù)庫標(biāo)準(zhǔn)委員會(huì))下設(shè)了一個(gè)SQL/XML委員會(huì),以確保XML能與其支持工具一同工作。 數(shù)據(jù)倉庫不再是只有大型企業(yè)才能使用的奢侈品。由于硬件和軟件價(jià)格的下降,中型企業(yè)現(xiàn)在也能使用數(shù)據(jù)倉庫了。編寫OLAP查詢與編寫OLTP查詢不同,也許需要專門寫一本講OLAP查詢的“Smarties”書?! ¢_源數(shù)據(jù)庫做得很棒,也越來越符合標(biāo)準(zhǔn)。LAMP(Linux、 Apache、 MySQL以及Python/PHP)平臺(tái)占領(lǐng)了絕大多數(shù)網(wǎng)站。Ingres、Postgres、Firebird以及其他數(shù)據(jù)庫實(shí)現(xiàn)了ANSI SQL-92標(biāo)準(zhǔn)特性、大多數(shù)的SQL-99特性以及一些SQL:2003特性。 縱列數(shù)據(jù)庫(columnar database)、并行以及開放式并發(fā)機(jī)制開始出現(xiàn)在商業(yè)產(chǎn)品中,而不再局限于實(shí)驗(yàn)室內(nèi)。SQL標(biāo)準(zhǔn)總是在不斷改變,但并不是每一次都變得更好。標(biāo)準(zhǔn)的某些部分變得更趨于關(guān)系及集合,而其他部分則很明顯地往使用過程式思想、處理非關(guān)系型數(shù)據(jù)的方向發(fā)展,這類標(biāo)準(zhǔn)建立在文件系統(tǒng)模型之上。引用David McGoveran的一句話:“委員會(huì)從未見過一個(gè)不喜歡的特性。”這句話,看來說得沒錯(cuò)?! NSI/ISO SQL-92標(biāo)準(zhǔn)是一組公有的子集,通用于各類SQL產(chǎn)品,使這些產(chǎn)品能夠?yàn)槿怂谩J聦?shí)上,幾年前美國政府將SQL-99標(biāo)準(zhǔn)描述為“仍在開發(fā)的標(biāo)準(zhǔn)”,要求聯(lián)邦政府的合同必須與SQL-92標(biāo)準(zhǔn)兼容?! ≡陂_發(fā)兼容SQL-92標(biāo)準(zhǔn)的產(chǎn)品時(shí),我們可以使用FIPS-127一致性測試套件對(duì)產(chǎn)品進(jìn)行測試,這樣所有供應(yīng)商均可朝著同一個(gè)方向邁進(jìn)。不過遺憾的是,克林頓政府中止了這個(gè)規(guī)定,而一致性問題又開始浮現(xiàn)。Whitemarsh信息系統(tǒng)公司董事長Michael M. Gorman曾擔(dān)任數(shù)據(jù)庫標(biāo)準(zhǔn)委員會(huì)INCITS H2秘書長二十余年,他有一篇關(guān)于一致性問題的重要論文發(fā)表在Wiscorp.com,該網(wǎng)站中其他關(guān)于SQL歷史中政治方面的文章也值得一讀?! 〗裉?, SQL-99是編寫在絕大多數(shù)平臺(tái)上的可移植代碼的標(biāo)準(zhǔn)。不過由于廠商支持SQL:2003特性的速度很快,我并不認(rèn)為要局限于各個(gè)平臺(tái)的最小交集?! 〉?版的新內(nèi)容 在第2版中,我曾刪除了書中的一些理論,并將這部分理論移到了Joe Celko’s Data and Databases: Concepts in Practice一書中。我找不到任何理由將這部分理論移回到第4版。由于樹及層次技術(shù)相關(guān)內(nèi)容足以編成一本書,因此我將這部分知識(shí)擴(kuò)展并移到Joe Celko’s Trees and Hierarchies in SQL for Smarties中。不過本書也簡單提及了樹及層次技術(shù)?! ∮捎诒緯嫦蚋呒?jí)程序員,因此我將適合新手的編程技巧移到了Joe Celko’s SQL Programming Style一書中講述。本書適合那些編寫真正SQL語句的讀者,而非使用某些SQL“方言”或偽裝成SQL的原生語言的讀者。實(shí)際上,將標(biāo)準(zhǔn)SQL語言翻譯成他們所使用的SQL“方言”不會(huì)太麻煩?! ∥覈L試在方案中嵌入注解,以說明為什么該方案能夠生效。我希望這種方式能幫助讀者了解底層原理,以便將此原理應(yīng)用到其他情形?! ≡S多人為本書提供了素材,他們有些直接告訴我這些素材,有些則是通過新聞組提供了素材,而我無法對(duì)這些提供素材的朋友一一表示感謝,但我會(huì)盡量在他們提供的代碼后面貼上他們的名字。為了避免遺漏某些朋友,我在此列出向我提供了素材或思路的朋友名單:Aaron Bertrand、 Alejandro Mesa、 Anith Sen、 Craig Mullins (為本書的多個(gè)版本進(jìn)行了校對(duì))、 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。另外,還要感謝其他為我提供了素材,而我卻忘記了名字的朋友們?! 「脱a(bǔ)充[1] 請(qǐng)將所有更正、補(bǔ)充、建議、改進(jìn)以及替代方案發(fā)給出版商或我本人,尤其是當(dāng)你發(fā)現(xiàn)了某些更好的方法時(shí),請(qǐng)一定告知?! 1]① 讀者也可免費(fèi)注冊(cè)圖靈社區(qū)并為本書提交勘誤?!幷咦?/pre>內(nèi)容概要
《SQL權(quán)威指南(第4版)》為SQL名著中文版,兼顧技術(shù)與實(shí)踐,全面細(xì)致介紹高級(jí)技術(shù),致力于打造SQL編程專家?!禨QL權(quán)威指南(第4版)》闡釋了數(shù)據(jù)庫設(shè)計(jì)、優(yōu)化和操作的各方面內(nèi)容,提供了成為SQL編程專業(yè)人士所需的技術(shù)與技巧、針對(duì)新舊挑戰(zhàn)性難題的優(yōu)秀解決方案、專業(yè)的思考方式(以保證程序的正確性與高效性),并涉及了數(shù)據(jù)庫設(shè)計(jì)與規(guī)范化、SQL數(shù)據(jù)類型、查詢、分組、集合操作、優(yōu)化等主題。另外,Joe
Celko以通俗易懂的語言敘述了一些關(guān)鍵問題,比如避免使用過多NULL的原因及查詢優(yōu)化方式等。
《SQL權(quán)威指南(第4版)》適合中高級(jí)SQL編程人員學(xué)習(xí)參考。作者簡介
Joe Celko,世界著名的數(shù)據(jù)庫專家,曾擔(dān)任ANSl
SQL標(biāo)準(zhǔn)委員會(huì)成員達(dá)10年之久,參與了SQL-89和SQL-92標(biāo)準(zhǔn)的制定,是世界上讀者數(shù)量最多的SQL圖書作者之一。他曾撰寫過一系列專欄,并通過他的新聞組支持和推動(dòng)了數(shù)據(jù)庫編程技術(shù)以及ANSl/ISO標(biāo)準(zhǔn)的發(fā)展。除本書外,他還撰寫了多部SQL經(jīng)典著作,包括《SQL編程風(fēng)格》、《SQL解惑》和《SQL權(quán)威指南》,上述作品的中文版均已由人民郵電出版社出版。書籍目錄
第1章 數(shù)據(jù)庫與文件系統(tǒng)
1.1 實(shí)體表
1.2 關(guān)系表
1.3 行與記錄
1.4 列與字段
1.5 模式對(duì)象
1.6 CREATE SCHEMA語句
第2章 事務(wù)與并發(fā)控制
2.1 會(huì)話
2.2 事務(wù)與ACID
2.2.1 原子性
2.2.2 一致性
2.2.3 隔離性
2.2.4 持久性
2.3 并發(fā)控制
2.3.1 三種現(xiàn)象
2.3.2 隔離級(jí)別
2.4 保守式并發(fā)控制
2.5 快照隔離與樂觀式并發(fā)
2.6 邏輯并發(fā)控制
2.7 死鎖與活鎖
第3章 數(shù)據(jù)庫模式對(duì)象
3.1 CREATE SCHEMA語句
3.2 CREATE PROCEDURE、CREATE FUNCTION以及CREATE TRIGGER語句
3.3 CREATE DOMAIN語句
3.4 創(chuàng)建序列
3.5 創(chuàng)建斷言
3.5.1 為模式級(jí)約束使用視圖
3.5.2 為約束使用主鍵和斷言
3.6 字符集相關(guān)結(jié)構(gòu)
3.6.1 創(chuàng)建字符集
3.6.2 創(chuàng)建排序規(guī)則
3.6.3 創(chuàng)建翻譯
第4章 定位數(shù)據(jù)和特殊數(shù)值
4.1 顯式的物理定位器
4.1.1 ROWID和物理磁盤地址
4.1.2 標(biāo)識(shí)列
4.2 生成的標(biāo)識(shí)符
4.2.1 GUID
4.2.2 UUID
4.3 序列生成函數(shù)
4.4 預(yù)分配值
4.5 特殊序列
4.5.1 Series表
4.5.2 素?cái)?shù)
4.5.3 隨機(jī)順序值
4.5.4 其他序列
第5章 基礎(chǔ)表和相關(guān)元素
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 臨時(shí)表
5.5 表操作
5.5.1 DROP TABLE<表名>
5.5.2 ALTER TABLE
5.6 避免屬性分割
5.6.1 表級(jí)屬性分割
5.6.2 行級(jí)屬性分割
5.7 在DDL中表現(xiàn)類層次關(guān)系
5.8 顯式物理定位器
5.9 自增列
5.9.1 ROWID與物理磁盤地址
5.9.2 標(biāo)識(shí)列
5.9.3 對(duì)比標(biāo)識(shí)列和序列
5.10 生成標(biāo)識(shí)符
5.10.1 行業(yè)標(biāo)準(zhǔn)的唯一標(biāo)識(shí)符
5.10.2 國防部的唯一標(biāo)識(shí)符
5.10.3 序列生成函數(shù)
5.10.4 唯一值生成器
5.10.5 驗(yàn)證源
5.11 關(guān)于重復(fù)行
5.12 其他模式對(duì)象
5.13 臨時(shí)表
5.14 CREATE DOMAIN語句
5.15 CREATE TRIGGER語句
5.16 CREATE PROCEDURE語句
5.17 DECLARE CURSOR語句
5.17.1 如何使用游標(biāo)
5.17.2 位置更新及刪除語句
第6章 過程式、半過程式以及聲明式編程
6.1 軟件工程基本原理
6.2 內(nèi)聚性
6.3 耦合度
6.4 大跨越
6.4.1 一個(gè)常見的錯(cuò)誤
6.4.2 一處改進(jìn)
6.5 重寫技巧
6.5.1 數(shù)據(jù)表和生成器代碼
6.5.2 用計(jì)算替代查找
6.5.3 斐波那契數(shù)列
6.6 謂詞函數(shù)
6.7 過程化分解和邏輯分解
6.7.1 過程式分解方案
6.7.2 邏輯分解方案
第7章 過程式結(jié)構(gòu)
7.1 創(chuàng)建過程
7.2 創(chuàng)建觸發(fā)器
7.3 游標(biāo)
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 如何使用游標(biāo)
7.3.8 位置更新及刪除語句
7.4 序列
7.5 生成列
7.6 表函數(shù)
第8章 輔助表
8.1 序列表
8.1.1 對(duì)列表進(jìn)行枚舉
8.1.2 將序列映射為循環(huán)
8.1.3 取代迭代循環(huán)
8.2 查找輔助表
8.2.1 簡單轉(zhuǎn)換輔助表
8.2.2 多轉(zhuǎn)換值輔助表
8.2.3 多參數(shù)輔助表
8.2.4 范圍輔助表
8.2.5 層次結(jié)構(gòu)輔助表
8.2.6 “一個(gè)真正的查找表”
8.3 輔助函數(shù)表
8.3.1 用輔助表求反函數(shù)
8.3.2 用輔助函數(shù)表進(jìn)行插值
8.4 全局常量表
8.4.1 預(yù)分配值
8.4.2 素?cái)?shù)
8.4.3 斐波那契數(shù)列
8.4.4 隨機(jī)順序值
8.5 把過程代碼轉(zhuǎn)換成表時(shí)的注意事項(xiàng)
第9章 規(guī)范化
9.1 函數(shù)依賴和多值依賴
9.2 第一范式(1NF)
9.3 第二范式(2NF)
9.4 第三范式(3NF)
9.5 基本關(guān)鍵字范式(EKNF)
9.6 Boyce-Codd范式(BCNF)
9.7 第四范式(4NF)
9.8 第五范式(5NF)
9.9 域-鍵范式(DKNF)
9.10 規(guī)范化的實(shí)用技巧
9.11 鍵類型
9.11.1 自然鍵
9.11.2 人工鍵
9.11.3 對(duì)外暴露的物理定位器
9.12 非規(guī)范化的實(shí)用技巧
第10章 SQL的數(shù)值數(shù)據(jù)
10.1 數(shù)值類型
10.2 數(shù)值類型的轉(zhuǎn)換
10.2.1 數(shù)值的舍入和截?cái)唷?br />10.2.2 CAST()函數(shù)
10.3 四則運(yùn)算函數(shù)
10.4 算術(shù)運(yùn)算和NULL
10.5 值與NULL的相互轉(zhuǎn)換
10.5.1 NULLIF()函數(shù)
10.5.2 COALESCE()函數(shù)
10.6 數(shù)學(xué)函數(shù)
10.6.1 數(shù)學(xué)運(yùn)算符
10.6.2 指數(shù)函數(shù)
10.6.3 標(biāo)量函數(shù)
10.6.4 將數(shù)值轉(zhuǎn)換為文字
10.7 唯一值生成器
10.7.1 存有間隙的序列
10.7.2 預(yù)分配數(shù)值
10.8 IP地址
10.8.1 CHAR(39)存儲(chǔ)
10.8.2 二進(jìn)制存儲(chǔ)
10.8.3 使用多個(gè)單獨(dú)的SMALLINT
第11章 SQL中的時(shí)間數(shù)據(jù)類型
11.1 關(guān)于日歷標(biāo)準(zhǔn)的說明
11.2 SQL時(shí)間數(shù)據(jù)類型
11.2.1 時(shí)間的內(nèi)部表示
11.2.2 日期格式標(biāo)準(zhǔn)
11.2.3 處理時(shí)間戳
11.2.4 處理時(shí)間
11.2.5 時(shí)區(qū)和夏令時(shí)
11.3 INTERVAL數(shù)據(jù)類型
11.4 時(shí)間算術(shù)
11.5 時(shí)間數(shù)據(jù)模型的特性
11.5.1 為持續(xù)時(shí)間建模
11.5.2 持續(xù)時(shí)間之間的關(guān)系
第12章 字符數(shù)據(jù)類型
12.1 SQL字符串問題
12.1.1 字符串相等問題
12.1.2 字符串排序問題
12.1.3 字符串分組問題
12.2 標(biāo)準(zhǔn)字符串函數(shù)
12.3 常見的廠商擴(kuò)展
12.4 Cutter表
12.5 嵌套替換
第13章 NULL:SQL中的缺失數(shù)據(jù)
13.1 空表和缺失表
13.2 列中的缺失值
13.3 上下文和缺失值
13.4 比較NULL
13.5 NULL和邏輯
13.5.1 子查詢謂詞中的NULL
13.5.2 邏輯值謂詞
13.6 算術(shù)中的NULL值
13.7 函數(shù)中的NULL值
13.8 NULL和宿主語言
13.9 NULL的設(shè)計(jì)忠告
13.10 關(guān)于多NULL值的說明
第14章 多列數(shù)據(jù)元素
14.1 距離函數(shù)
14.2 在SQL中存儲(chǔ)IPv4地址
14.2.1 使用單個(gè)VARCHAR(15)列表示IPv4地址
14.2.2 使用一個(gè)INTEGER列表示IPv4地址
14.2.3 使用四個(gè)SMALLINT列表示IPv4地址
14.3 在SQL中存儲(chǔ)IPv6地址
14.4 貨幣與其他單位的轉(zhuǎn)換
14.5 社會(huì)安全號(hào)
14.6 有理數(shù)
第15章 表操作
15.1 DELETE FROM語句
15.1.1 DELETE FROM子句
15.1.2 WHERE子句
15.1.3 根據(jù)輔助表中的數(shù)據(jù)執(zhí)行刪除
15.1.4 在相同表內(nèi)進(jìn)行刪除
15.1.5 不用聲明引用完整性在多個(gè)表中進(jìn)行刪除
15.2 INSERT INTO語句
15.2.1 INSERT INTO子句
15.2.2 插入的性質(zhì)
15.2.3 批量裝載和卸載實(shí)用程序
15.3 UPDATE語句
15.3.1 UPDATE子句
15.3.2 WHERE子句
15.3.3 SET子句
15.3.4 利用第二張表進(jìn)行更新
15.3.5 在UPDATE中使用CASE表達(dá)式
15.4 常見廠商擴(kuò)展的缺陷說明
15.5 MERGE語句
第16章 比較或theta操作
16.1 數(shù)據(jù)類型轉(zhuǎn)換
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表達(dá)式
18.1 CASE表達(dá)式
18.1.1 COALESCE()和NULLIF()函數(shù)
18.1.2 帶GROUP BY的CASE表達(dá)式
18.1.3 CASE、CHECK()子句和邏輯蘊(yùn)涵
18.2 子查詢表達(dá)式和常量
18.3 Rozenshtein特征函數(shù)
第19章 LIKE與SIMILAR TO謂詞
19.1 使用模式的技巧
19.2 NULL值和空字符串的謂詞結(jié)果
19.3 LIKE并不是相等
19.4 用聯(lián)結(jié)消除LIKE謂詞
19.5 CASE表達(dá)式和LIKE搜索條件
19.6 SIMILAR TO謂詞
19.7 字符串的有關(guān)技巧
19.7.1 字符串的字符內(nèi)容
19.7.2 搜索與聲明一個(gè)串
19.7.3 創(chuàng)建字符串中的索引
第20章 BETWEEN和OVERLAPS謂詞
20.1 BETWEEN謂詞
20.1.1 NULL值的結(jié)果
20.1.2 空集的結(jié)果
20.1.3 程序設(shè)計(jì)技巧
20.2 OVERLAPS謂詞
第21章 [NOT] IN()謂詞
21.1 優(yōu)化IN()謂詞
21.2 用IN()謂詞替換OR
21.3 NULL和IN()謂詞
21.4 IN()謂詞和引用約束
21.5 IN()謂詞和標(biāo)量查詢
第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 標(biāo)量子查詢比較
23.2 量詞和缺失數(shù)據(jù)
23.3 ALL謂詞和極值函數(shù)
23.4 UNIQUE謂詞
23.5 DISTINCT謂詞
第24章 簡單SELECT語句
24.1 SELECT語句執(zhí)行順序
24.2 單級(jí)SELECT語句
第25章 高級(jí)SELECT語句
25.1 關(guān)聯(lián)子查詢
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自聯(lián)結(jié)
25.3.5 兩次或多次OUTER JOIN
25.3.6 OUTER JOIN和聚合函數(shù)
25.3.7 FULL OUTER JOIN
25.4 UNION JOIN操作符
25.5 標(biāo)量SELECT表達(dá)式
25.6 舊JOIN語法與新JOIN語法
25.7 受約束的JOIN
25.7.1 庫存和訂單
25.7.2 穩(wěn)定的婚姻
25.7.3 將球裝入盒中
25.8 Codd博士的T聯(lián)結(jié)
25.8.1 Stobbs方案
25.8.2 Pieere方案
25.8.3 參考文獻(xiàn)
第26章 虛擬表:視圖、派生表、CTE及MQT
26.1 查詢中的視圖
26.2 可更新視圖和只讀視圖
26.3 視圖的類型
26.3.1 單表投影和限制
26.3.2 計(jì)算列
26.3.3 轉(zhuǎn)換列
26.3.4 分組視圖
26.3.5 聯(lián)結(jié)視圖
26.3.6 視圖的聯(lián)結(jié)
26.3.7 嵌套視圖
26.4 數(shù)據(jù)庫引擎如何處理視圖
26.4.1 視圖列列表
26.4.2 視圖物化
26.4.3 內(nèi)嵌文本擴(kuò)展
26.4.4 指針結(jié)構(gòu)
26.4.5 索引和視圖
26.5 WITH CHECK OPTION子句
26.6 刪除視圖
26.7 視圖與臨時(shí)表的使用提示
26.7.1 使用視圖
26.7.2 使用臨時(shí)表
26.7.3 用視圖扁平化表
26.8 使用派生表
26.8.1 FROM子句中的派生表
26.8.2 包含VALUES構(gòu)造器的派生表
26.9 公用表表達(dá)式
26.10 遞歸公用表表達(dá)式
26.10.1 簡單增量
26.10.2 簡單樹遍歷
26.11 物化查詢表
第27章 在查詢中分區(qū)數(shù)據(jù)
27.1 覆蓋和分區(qū)
27.1.1 按范圍分區(qū)
27.1.2 單列范圍表
27.1.3 用函數(shù)進(jìn)行分區(qū)
27.1.4 按順序分區(qū)
27.1.5 使用窗口函數(shù)進(jìn)行分區(qū)
27.2 關(guān)系除法
27.2.1 帶余除法
27.2.2 精確除法
27.2.3 性能說明
27.2.4 Todd的除法
27.2.5 帶JOIN的除法
27.2.6 用集合操作符進(jìn)行除法
27.3 Romley除法
27.4 RDBMS中的布爾表達(dá)式
27.5 FIFO和LIFO子集
第28章 分組操作
28.1 GROUP BY子句
28.2 GROUP BY和HAVING
28.3 多層次聚合
28.3.1 多級(jí)聚合的分組視圖
28.3.2 多層次聚合的子查詢表達(dá)式
28.3.3 多層聚合的CASE表達(dá)式
28.4 在計(jì)算列上分組
28.5 成對(duì)分組
28.6 排序和GROUP BY
第29章 簡單聚合函數(shù)
29.1 COUNT()函數(shù)
29.2 SUM()函數(shù)
29.3 AVG()函數(shù)
29.3.1 空組的平均數(shù)
29.3.2 多個(gè)列上的平均值
29.4 極值函數(shù)
29.4.1 簡單的極值函數(shù)
29.4.2 廣義極值函數(shù)
29.4.3 多條件極值函數(shù)
29.4.4 GREATEST()和LEAST()函數(shù)
29.5 LIST()聚合函數(shù)
29.5.1 使用遞歸CTE的LIST聚合函數(shù)
29.5.2 交叉表的LIST()函數(shù)
29.6 PRD()聚合函數(shù)
29.6.1 通過表達(dá)式實(shí)現(xiàn)PRD()函數(shù)
29.6.2 通過對(duì)數(shù)實(shí)現(xiàn)PRD()聚合函數(shù)
29.7 位運(yùn)算符聚合函數(shù)
29.7.1 OR位運(yùn)算符聚合函數(shù)
29.7.2 AND位運(yùn)算符聚合函數(shù)
第30章 高級(jí)分組、窗口聚合以及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 窗口化聚合函數(shù)
30.5 序號(hào)函數(shù)
30.5.1 行號(hào)
30.5.2 RANK()和DENSE_RANK()
30.5.3 PERCENT_RANK()和CUME_DIST()
30.5.4 一些示例
30.6 廠商擴(kuò)展
30.6.1 LEAD和LAG函數(shù)
30.6.2 FIRST和LAST函數(shù)
30.7 一點(diǎn)歷史知識(shí)
第31章 SQL中的描述性統(tǒng)計(jì)
31.1 眾數(shù)
31.2 AVG()函數(shù)
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提出的應(yīng)用視圖的中值
31.3.7 使用特征函數(shù)的中值
31.3.8 Celko第三中值
31.3.9 Ken Henderson的中值
31.3.10 OLAP中值
31.4 方差和標(biāo)準(zhǔn)偏差
31.5 平均偏差
31.6 累積統(tǒng)計(jì)
31.6.1 運(yùn)行差分
31.6.2 累積百分比
31.6.3 序號(hào)函數(shù)
31.6.4 五分位數(shù)和相關(guān)統(tǒng)計(jì)
31.7 交叉表
31.7.1 通過交叉聯(lián)結(jié)建立交叉表
31.7.2 通過外聯(lián)結(jié)建立交叉表
31.7.3 通過子查詢建立交叉表
31.7.4 使用CASE表達(dá)式建立交叉表
31.8 調(diào)和平均數(shù)和幾何平均數(shù)
31.9 SQL中的多變量描述統(tǒng)計(jì)數(shù)據(jù)
31.9.1 協(xié)方差
31.9.2 皮爾森相關(guān)系數(shù)r
31.9.3 多變量描述統(tǒng)計(jì)中的NULL值
31.10 SQL:2006中的統(tǒng)計(jì)函數(shù)
31.10.1 方差、標(biāo)準(zhǔn)偏差以及描述統(tǒng)計(jì)
31.10.2 相關(guān)性
31.10.3 分布函數(shù)
第32章 子序列、區(qū)域、順串、間隙及島嶼
32.1 查找尺寸為n的子區(qū)域
32.2 為區(qū)域編號(hào)
32.3 查找最大尺寸的區(qū)域
32.4 界限查詢
32.5 順串和序列查詢
32.6 數(shù)列的求和
32.7 交換和平移列表值
32.8 壓縮一列數(shù)值
32.9 折疊一列數(shù)值
32.10 覆蓋
第33章 SQL中的矩陣
33.1 通過命名列進(jìn)行訪問的數(shù)組
33.2 通過下標(biāo)列進(jìn)行訪問的數(shù)組
33.3 SQL的矩陣操作
33.3.1 矩陣等式
33.3.2 矩陣加法
33.3.3 矩陣乘法
33.3.4 矩陣轉(zhuǎn)置
33.3.5 行排序及列排序
33.3.6 其他矩陣操作
33.4 將表扁平化為數(shù)組
33.5 比較表格式中的數(shù)組
第34章 集合操作
34.1 UNION和UNION ALL
34.1.1 執(zhí)行順序
34.1.2 混合使用UNION和UNION ALL操作符
34.1.3 對(duì)同一表中的列執(zhí)行UNION操作
34.2 INTERSECT和EXCEPT
34.2.1 沒有NULL值和重復(fù)行時(shí)的INTERSECT和EXCEPT操作
34.2.2 存在NULL值和重復(fù)行時(shí)的INTERSECT和EXCEPT操作
34.3 關(guān)于ALL和SELECT DISTINCT的一個(gè)說明
34.4 相等子集和真子集
第35章 子集
35.1 表中的每個(gè)第n項(xiàng)
35.2 從表中選取隨機(jī)行
35.3 CONTAINS操作符
35.3.1 真子集操作符
35.3.2 表的相等操作
35.4 序列間隙
35.5 重疊區(qū)間的覆蓋問題
35.6 選取有代表性的子集
第36章 SQL中的樹和層次結(jié)構(gòu)
36.1 鄰接列表模型
36.1.1 復(fù)雜約束
36.1.2 查詢的過程遍歷
36.1.3 更改表
36.2 路徑枚舉模型
36.2.1 查找子樹和節(jié)點(diǎn)
36.2.2 找出層次和后代
36.2.3 刪除節(jié)點(diǎn)和子樹
36.2.4 完整性約束
36.3 層次結(jié)構(gòu)的嵌套集合模型
36.3.1 計(jì)數(shù)特性
36.3.2 包含特性
36.3.3 下級(jí)節(jié)點(diǎn)
36.3.4 層次聚合
36.3.5 刪除節(jié)點(diǎn)和子樹
36.3.6 將鄰接列表轉(zhuǎn)換為嵌套集合模型
36.4 其他表現(xiàn)樹和層次結(jié)構(gòu)的模型
第37章 SQL中的圖
37.1 鄰接列表模型圖
37.1.1 SQL和鄰接列表模型
37.1.2 路徑與CTE
37.1.3 環(huán)狀圖
37.1.4 鄰接矩陣模型
37.2 分割嵌套集合模型表示的圖節(jié)點(diǎn)
37.2.1 圖中的所有節(jié)點(diǎn)
37.2.2 路徑端點(diǎn)
37.2.3 可達(dá)節(jié)點(diǎn)
37.2.4 邊
37.2.5 入度和出度
37.2.6 源節(jié)點(diǎn)、匯聚節(jié)點(diǎn)、孤立節(jié)點(diǎn)和內(nèi)部節(jié)點(diǎn)
37.2.7 將無環(huán)圖轉(zhuǎn)化為嵌套集合
37.3 多邊形中的點(diǎn)
37.4 圖論參考書目
第38章 時(shí)間查詢
38.1 時(shí)間數(shù)學(xué)
38.2 個(gè)性化日歷
38.3 時(shí)間序列
38.3.1 時(shí)間序列中的間隙
38.3.2 連續(xù)時(shí)間段
38.3.3 相鄰事件中缺失的時(shí)間
38.3.4 查找日期
38.3.5 時(shí)間的起始點(diǎn)和結(jié)束點(diǎn)
38.3.6 開始時(shí)間和結(jié)束時(shí)間
38.4 儒略日
38.5 其他時(shí)間函數(shù)
38.6 星期
38.7 在表中對(duì)時(shí)間建?!?br />38.8 日歷輔助表
38.9 2000年問題
38.9.1 零
38.9.2 閏年
38.9.3 千年問題
38.9.4 舊數(shù)據(jù)中的怪異日期
38.9.5 后果
第39章 優(yōu)化SQL
39.1 訪問方法
39.1.1 順序訪問
39.1.2 索引訪問
39.1.3 散列索引
39.1.4 位向量索引
39.2 如何建立索引
39.2.1 使用簡單查詢條件
39.2.2 簡單字符串表達(dá)式
39.2.3 簡單時(shí)間表達(dá)式
39.3 提供額外信息
39.4 謹(jǐn)慎建立多列索引
39.5 考察IN謂詞
39.6 避免UNION
39.7 聯(lián)結(jié)勝于嵌套查詢
39.8 使用更少的語句
39.9 避免排序
39.10 避免交叉聯(lián)結(jié)
39.11 了解優(yōu)化器
39.12 在模式更改后重編譯靜態(tài)SQL
39.13 臨時(shí)表有時(shí)能帶來方便
39.14 更新統(tǒng)計(jì)數(shù)據(jù)
39.15 不要迷信較新的特性
參考文獻(xiàn)章節(jié)摘錄
版權(quán)頁: 插圖: DECIMAL(p,s)也可以書寫為DEC(p,S),不過SQL程序員并不使用這種縮寫形式。例如,OECIMAL(8,2)可容納數(shù)值123456.78,即8位有效數(shù)字和兩位小數(shù)。 NUMERIC和DECIMAL之間的區(qū)別非常細(xì)微:NUMERIC指定了嚴(yán)格的精度和小數(shù)部分;DECIMAL則指定嚴(yán)格的小數(shù)部分,而精度則在執(zhí)行時(shí)定義為等于或大于某個(gè)特定的值。這意味著DECIMAL類型需要提供更多的位數(shù),以進(jìn)行四舍五入操作,而NUMERIC類型則不需要。大型機(jī)COBOL程序員會(huì)把NUMERIC視為COBOL的PICTURE數(shù)值類型,而把DECIMAL看做BCD類型。不過現(xiàn)在的個(gè)人機(jī)程序員或許看不到這些了。 近似數(shù)值由尾數(shù)和指數(shù)組成。尾數(shù)是一個(gè)帶符號(hào)數(shù)值;指數(shù)則是帶符號(hào)整數(shù),它指定了尾數(shù)的大小。近似數(shù)有一定的精度。其精度值為一個(gè)正整數(shù),它指定尾數(shù)中有效二進(jìn)制數(shù)的位數(shù)。近似數(shù)的值是尾數(shù)乘以10為底的指數(shù)。FLOAT(p)、REAL和DOUBLE PRECISION都是近似數(shù)類型。FLOAT(p)和REAL之間稍有不同,前者的二進(jìn)制精度大于或等于指定值,而后者則是在運(yùn)行時(shí)定義精度。 現(xiàn)實(shí)世界中,REAL和DOUBLE PRECISION類型均遵循IEEE 754標(biāo)準(zhǔn)中的浮點(diǎn)數(shù)標(biāo)準(zhǔn)。現(xiàn)在幾乎沒有SQL程序員會(huì)使用FLOAT(P)類型,該類型將來也許會(huì)被標(biāo)準(zhǔn)否決。IEEE標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù)被嵌入到處理器芯片中,因此其運(yùn)行速度超過了軟件實(shí)現(xiàn)的運(yùn)行速度。IEEE 754標(biāo)準(zhǔn)采用二進(jìn)制表示,單精度為32位,雙精度為64位,而這些精度正好適用于個(gè)人計(jì)算機(jī)和大多數(shù)Unix和Linux平臺(tái)。 單精度數(shù)值的范圍近似為±10^—44.85~10^38.53,雙精度數(shù)值的范圍近似為±10^—323.3~10^308.3。不過,IEEE標(biāo)準(zhǔn)中的某些特殊值并未包含在SQL內(nèi)。 0不能直接用上述形式表示,它被描述為擁有一個(gè)零指數(shù)部分和一個(gè)零尾數(shù)部分的特殊值。加上符號(hào)部分構(gòu)成—0或+0,這使得這兩個(gè)值進(jìn)行相等比較時(shí)結(jié)果為相等,但卻是不同的值。如果指數(shù)部分為0,但尾數(shù)部分不為0(否則就視為零了),那么由于二進(jìn)制小數(shù)點(diǎn)前必須包含1,因此該值是一個(gè)非規(guī)范數(shù)值(我們也可以將某些表稱為非規(guī)范表,不過這兩處的“非規(guī)范”一詞含義不同)。這樣的數(shù)值表示為—s*0f*2—126,其中s是符號(hào)位,f是尾數(shù)部分。對(duì)于雙精度,非規(guī)范數(shù)值的格式為—s*0.f*—1022。可將0看做一種特殊的非規(guī)范數(shù)值。 “+∞”和“—∞”兩個(gè)值表示為全1的指數(shù)和全0的尾數(shù)。符號(hào)位區(qū)別正無窮大和負(fù)無窮大。使用無窮大標(biāo)識(shí)某一特殊值的做法非常有用,因?yàn)檫@樣可使得運(yùn)算在溢出情況下繼續(xù)進(jìn)行。IEEE浮點(diǎn)標(biāo)準(zhǔn)中也對(duì)無窮大值的運(yùn)算進(jìn)行了定義,而SQL中則未定義這類數(shù)值。 NaN(Not a Number,非數(shù))通常用于表示不代表數(shù)值的位配置(bit confignration)。NaN由一個(gè)全1指數(shù)和一個(gè)非0尾數(shù)的位模式表示。有兩類NaN,即QNaN(Quiet NaN,靜態(tài)非數(shù))和SNaN(Signalling NaN,動(dòng)態(tài)非數(shù))。媒體關(guān)注與評(píng)論
“Joe Celko的這本書無疑已經(jīng)成為每一位SQL程序員案頭必備的權(quán)威指南?!薄氨緯皫装嫖叶伎催^,Joe Celko這本書的最大特點(diǎn)就是,一旦你讀了開頭,就不想停下來了?!薄x者評(píng)論編輯推薦
世界級(jí)數(shù)據(jù)庫專家Joe Celko經(jīng)典力作掌握高級(jí)技術(shù),精通SQL編程的不二之選揭示SQL標(biāo)準(zhǔn)背后鮮為人知的理論與實(shí)踐考量圖書封面
圖書標(biāo)簽Tags
無評(píng)論、評(píng)分、閱讀與下載
- 還沒讀過(10)
- 勉強(qiáng)可看(740)
- 一般般(126)
- 內(nèi)容豐富(5238)
- 強(qiáng)力推薦(429)