SQL編程風(fēng)格

出版時(shí)間:2008-10  出版社:人民郵電出版社  作者:塞科  頁數(shù):194  譯者:米全喜  
Tag標(biāo)簽:無  

前言

  本書不是一本SQL入門書。真的,如果你需要的是學(xué)習(xí)如何使用SQL進(jìn)行編程,有其他更好的書。本書應(yīng)該是你買的第二本書,而不是第一本?! ”緯僭O(shè)你已經(jīng)能夠編寫一定水平的SQL,并且希望進(jìn)一步提高。如果你想要學(xué)習(xí)SQL編程技巧,可以買一本我編寫的Joe Celkos SQL FOR Smarties(2005年第3版)①。在本書中,我想教給讀者的,是如何以邏輯和說明性的方式編程,而不是以過程化或面向?qū)ο蟮姆绞健簿褪且坝貌樵兊乃季S看數(shù)據(jù)庫”②?! 〗^大多數(shù)sQL程序員都是在有了幾年的過程化語言或面向?qū)ο笳Z言編程經(jīng)驗(yàn)之后才開始接觸SQL的。他們拿到某個(gè)SQL產(chǎn)品,然后只能自學(xué),使用的書都是“sQL forBrain-Dead Morons(SQL傻瓜書)”、“Le鋤SQL in ten:Easy Lessons or Five Hard Ones(用10節(jié)容易的或5節(jié)復(fù)雜的課程學(xué)會(huì)SQL)”或其他更爛的書?! ∵@太荒唐了!成為熟練的木匠或廚師都至少需要5年。為什么你會(huì)相信人們?cè)谝粋€(gè)周末內(nèi)就能變成SQL高手?他們會(huì)變成糟糕的SQL程序員,只會(huì)使用本地SQL產(chǎn)品中的方言,并帶有他們從前使用的編程語言的濃重口音。  可怕的是這些人常常不知道自己是拙劣的程序員。一個(gè)極端情況是,整個(gè)公司的人都做得很差,他們從來沒有見過高手。

內(nèi)容概要

  《圖靈程序設(shè)計(jì)叢書·SQL編程風(fēng)格》針對(duì)數(shù)據(jù)庫的設(shè)計(jì)與編程提出了一系列規(guī)則和建議,內(nèi)容涵蓋命名規(guī)范、代碼版式、鍵的設(shè)計(jì)、數(shù)據(jù)編碼方案、編碼風(fēng)格、視圖和存儲(chǔ)過程的使用以及SQL 中的思考方式和一些試探法等多方面。這些規(guī)則都給出了原理說明和例外情況,并列舉了大量示例。通過閱讀《圖靈程序設(shè)計(jì)叢書·SQL編程風(fēng)格》,讀者可以加深對(duì)SQL 思維方式的理解,改善SQL 編程風(fēng)格,并編寫出可讀性強(qiáng)、可移植且易于維護(hù)的SQL 代碼。此外,書中的規(guī)則對(duì)于公司內(nèi)部制定編程規(guī)范也具有很好的借鑒作用。  《圖靈程序設(shè)計(jì)叢書·SQL編程風(fēng)格》適合數(shù)據(jù)庫管理人員和開發(fā)人員閱讀,也可作為高等院校計(jì)算機(jī)專業(yè)師生的參考教材。

作者簡介

  Joe Celko世界著名的數(shù)據(jù)庫專家,曾經(jīng)擔(dān)任ANSI SQL標(biāo)準(zhǔn)委員會(huì)成員達(dá)10年之久,他也是世界上讀者數(shù)量最多的SOL圖書作者之一。他曾撰寫過一系列專欄,并通過他的新聞組支持了數(shù)據(jù)庫編程技術(shù)以及ANSI/ISO標(biāo)準(zhǔn)的發(fā)展。除本書外,他還撰寫了多部SQL經(jīng)典著作,包括《SQL解惑(第2版)》(人民郵電出版社,2008)和《SOL權(quán)威指南》(即將由人民郵電出版社出版)。

書籍目錄

第1章 名稱與數(shù)據(jù)元素1.1 名稱1.1.1 注意名稱長度1.1.2 在名稱中避免使用所有特殊字符1.1.3 避免使用引號(hào)分隔標(biāo)識(shí)符1.1.4 實(shí)施大寫規(guī)則以避免大小寫區(qū)分問題1.2 遵循ISO-11179標(biāo)準(zhǔn)命名規(guī)范1.2.1 SQL的ISO-111791.2.2 抽象級(jí)別1.2.3 避免使用描述性前綴1.2.4 制定標(biāo)準(zhǔn)化的后綴1.2.5 表和視圖名稱應(yīng)當(dāng)是遵循業(yè)界標(biāo)準(zhǔn)的、集合、類或復(fù)數(shù)名稱1.2.6 相關(guān)名基本上也要遵循與其他名稱相同的命名規(guī)則1.2.7 關(guān)系表名應(yīng)當(dāng)是常用描述術(shù)語1.2.8 元數(shù)據(jù)模式訪問對(duì)象的名稱可以包含結(jié)構(gòu)信息1.3 命名數(shù)據(jù)元素時(shí)遇到的問題1.3.1 避免模糊名稱1.3.2 避免名稱在不同的地方改變1.3.3 不要使用專有暴露的物理定位符第2章 字體、標(biāo)點(diǎn)和間距2.1 版式與代碼2.1.1 名稱中只使用大小寫字母、數(shù)字和下劃線2.1.2 列名、參數(shù)和變量等標(biāo)量小寫2.1.3 模式對(duì)象名首字母大寫2.1.4 保留字大寫2.1.5 避免使用駝峰命名法2.2 單詞間距2.3 遵循規(guī)范標(biāo)點(diǎn)規(guī)則2.4 使用完全保留字2.5 如果在使用的SQL產(chǎn)品中有標(biāo)準(zhǔn)保留字,就不要使用專有保留字2.6 如果有標(biāo)準(zhǔn)語句,就不要使用專有語句2.7 疏排版面的隔空白道和垂直間距2.8 縮進(jìn)2.9 使用行間距將語句分組第3章 數(shù)據(jù)定義語言3.1 將默認(rèn)值放到合適的地方3.2 默認(rèn)值的類型應(yīng)當(dāng)與列的類型相同3.3 不要使用專有數(shù)據(jù)類型3.4 將PRIMARYKEY聲明放在CREATETABLE語句的開頭3.5 將列按照邏輯順序排列并按照邏輯組聚合3.6 將參考約束和操作在數(shù)據(jù)類型下面縮進(jìn)3.7 在產(chǎn)品代碼中為約束命名3.8 將CHECK()約束放在所檢查的內(nèi)容附近3.8.1 對(duì)數(shù)值考慮使用范圍約束3.8.2 對(duì)于字符值考慮使用LIKE和SIMILARTO約束3.8.3 時(shí)間值是有長短的3.8.4 避免使用REAL和FLOAT數(shù)據(jù)類型3.9 將多列約束盡可能靠近這些列3.10 將表級(jí)別的CHECK()約束放到表聲明的最后3.11 對(duì)多表約束使用CREATEASSERTION3.12 使CHECK()約束的目的唯一3.13 每個(gè)表都必須有鍵才能稱為表3.13.1 自動(dòng)編號(hào)不是關(guān)系型鍵3.13.2 文件不是表3.13.3 鍵的屬性3.14 不要分割屬性3.14.1 分割為多個(gè)表3.14.2 分割為多個(gè)列3.14.3 分割為多個(gè)行3.15 不要對(duì)RDBMS使用面向?qū)ο蟮脑O(shè)計(jì)3.15.1 表不是對(duì)象實(shí)例3.15.2 對(duì)RDBMS不要使用EAV設(shè)計(jì)第4章 尺度與測(cè)量4.1 測(cè)度論4.1.1 范圍與顆粒度4.1.2 范圍4.1.3 顆粒度、準(zhǔn)確度和精度4.2 尺度類型4.2.1 名義尺度4.2.2 種類尺度4.2.3 絕對(duì)尺度4.2.4 順序尺度4.2.5 級(jí)別尺度4.2.6 間距尺度4.2.7 比例尺度4.3 使用尺度4.4 尺度轉(zhuǎn)換4.5 導(dǎo)出單位4.6 標(biāo)點(diǎn)與標(biāo)準(zhǔn)單位4.7 在數(shù)據(jù)庫中使用尺度的一般準(zhǔn)則第5章 數(shù)據(jù)編碼方案5.1 不好的編碼方案5.2 編碼方案類型5.2.1 枚舉編碼5.2.2 測(cè)量編碼5.2.3 縮寫編碼5.2.4 算法編碼5.2.5 層次編碼5.2.6 向量編碼5.2.7 拼接編碼5.3 設(shè)計(jì)編碼方案的一般準(zhǔn)則5.3.1 現(xiàn)有的編碼標(biāo)準(zhǔn)5.3.2 允許擴(kuò)展5.3.3 使用顯式的丟失值避免NULL5.3.4 為終端用戶轉(zhuǎn)換編碼5.3.5 在數(shù)據(jù)庫中保存編碼5.4 多字符集第6章 編碼選擇6.1 選擇標(biāo)準(zhǔn)構(gòu)造,不要選擇專有構(gòu)造6.1.1 使用標(biāo)準(zhǔn)OUTERJOIN語法6.1.2 中綴INNERJOIN和CORSSJOIN語法是可選的,但是很好用6.1.3 使用ISO時(shí)間語法6.1.4 使用標(biāo)準(zhǔn)和可移植的函數(shù)6.2 選擇緊湊格式,不要選擇松散格式6.2.1 避免使用多余的括號(hào)6.2.2 使用CASE系列表達(dá)式6.2.3 避免使用冗余表達(dá)式6.2.4 尋找緊湊格式6.3 使用注釋6.3.1 存儲(chǔ)過程6.3.2 控制語句注釋6.3.3 對(duì)子句的注釋6.4 避免優(yōu)化器提示6.5 觸發(fā)器的優(yōu)先級(jí)不應(yīng)當(dāng)高于DRI操作6.6 使用SQL存儲(chǔ)過程6.7 避免在數(shù)據(jù)庫中使用用戶定義函數(shù)和擴(kuò)展6.7.1 多語言問題6.7.2 可移植性問題6.7.3 優(yōu)化問題6.8 避免使用過度的輔助索引6.9 避免使用關(guān)聯(lián)子查詢6.10 避免使用UNION6.11 測(cè)試SQL6.11.1 測(cè)試NULL所有可能的組合6.11.2 檢查并測(cè)試所有的CHECK()約束6.11.3 注意字符列6.11.4 測(cè)試大小第7章 如何使用視圖7.1 視圖的命名規(guī)范與表一樣7.2 視圖提供行和列級(jí)別的安全性7.3 視圖確保了有效訪問路徑7.4 視圖對(duì)用戶隱藏了復(fù)雜性7.5 視圖確保了正確的數(shù)據(jù)派生7.6 視圖將表和/或列重新命名7.7 視圖實(shí)施復(fù)雜的完整性約束7.8 可更新的視圖7.8.1 WITHCHECKOPTION子句7.8.2 INSTEADOF觸發(fā)器7.9 每個(gè)視圖都要有創(chuàng)建的原因7.10 避免視圖的數(shù)量快速增長7.11 將視圖與基表同步7.12 不恰當(dāng)?shù)厥褂靡晥D7.12.1 用于域支持的視圖7.12.2 單個(gè)解決方案的視圖7.12.3 不要為每個(gè)基表都創(chuàng)建視圖7.13 學(xué)習(xí)使用物化的視圖第8章 如何編寫存儲(chǔ)過程8.1 大多數(shù)SQL4GL都不是用于應(yīng)用程序的8.2 基本軟件工程8.2.1 內(nèi)聚8.2.2 耦合8.3 使用傳統(tǒng)的結(jié)構(gòu)化編程8.4 避免可移植性問題8.4.1 避免創(chuàng)建臨時(shí)表8.4.2 避免使用游標(biāo)8.4.3 面向集合的構(gòu)造優(yōu)于過程化代碼8.5 標(biāo)量與結(jié)構(gòu)化參數(shù)的對(duì)比8.6 避免使用動(dòng)態(tài)SQL8.6.1 性能8.6.2 SQL注入第9章 試探法9.1 將規(guī)格說明表達(dá)為清晰的語句9.2 在名詞的后面加上“……的集合”9.3 從問題語句中刪除行為動(dòng)詞9.4 仍然可以使用存根9.5 不要擔(dān)心數(shù)據(jù)的顯示9.6 第一次嘗試需要特別處理9.6.1 不要舍不得扔掉你對(duì)DDL的第一次嘗試9.6.2 保存你對(duì)DML的第一次嘗試9.7 不要以方框和箭頭的方式思考9.8 畫圓圈和集合圖9.9 學(xué)習(xí)方言9.10 假設(shè)WHERE子句是“巨型變形蟲”9.11 使用新聞組和因特網(wǎng)第10章 以SQL的方式思考10.1 不好的SQL編程方式與過程化語言10.2 把列當(dāng)作字段思考10.3 以過程化而不是說明性的方式思考10.4 模式應(yīng)該看起來像輸入格式附錄A 資源附錄B 參考文獻(xiàn)索引

章節(jié)摘錄

  第1章 名稱與數(shù)據(jù)元素  1.1 名稱  以前,每個(gè)程序員都有一套自己的命名規(guī)范。但是,他們常常都太有創(chuàng)造性了。我特別喜歡舉的一個(gè)例子是,有一個(gè)人使用某類主題詞作為他的COBOL段名:一段程序可能使用國家名,另外一段可能使用花卉,等等。即使就程序員而言,這顯然也是很奇怪的行為,但是很多程序員的個(gè)人命名系統(tǒng)只有他們自己明白,別人都無法理解?! ±纾沂褂玫牡谝粋€(gè)FORTRAN版本只允許6個(gè)字母的名稱,所以我變得善于使用和發(fā)明6個(gè)字母的名稱。開始編程時(shí)使用弱類型或無類型語言的程序員們都喜歡使用匈牙利表示法(參見Leszynski和Reddick)。老的習(xí)慣很難放棄。  當(dāng)軟件工程變成規(guī)范后,每個(gè)公司都制定了自己的命名規(guī)范,并使用某種數(shù)據(jù)字典實(shí)施這些規(guī)范。使用最廣泛的一套規(guī)則可能要算是由美國國防部建立的MIL STD8320.1,但它在聯(lián)邦政府之外卻從未流行起來。這與先前缺乏有效組織的體系相比,已經(jīng)有了很大進(jìn)步,但是每個(gè)公司都有很大的不同:有些對(duì)于名稱構(gòu)造有正式的規(guī)則,而另外一些則只是將賦予數(shù)據(jù)元素的第一個(gè)名稱登記一下?! ‖F(xiàn)在,我們有了ISO-11179標(biāo)準(zhǔn),它正變得越來越普遍,是某些政府工作所需要的,并且正在被放入到數(shù)據(jù)儲(chǔ)存庫產(chǎn)品中。一些工具和大量標(biāo)準(zhǔn)化編碼方案也被放入到了這個(gè)標(biāo)準(zhǔn)中??紤]到這一點(diǎn),并考慮到XML是一種標(biāo)準(zhǔn)交換格式,ISO-11179在今后將成為元數(shù)據(jù)參考的方法。

媒體關(guān)注與評(píng)論

  “Joe Celko是當(dāng)今數(shù)據(jù)庫界最著名的代表之一,他已經(jīng)寫了不少SQL編程的暢銷書。但是。本書非常與眾不同,它將教你如何轉(zhuǎn)變思維方式,以邏輯和說明性的方式編程。成為一流的SQL開發(fā)人員?!薄  猻QL-Server-Performance.corn

編輯推薦

  《圖靈程序設(shè)計(jì)叢書·SQL編程風(fēng)格》中,世界級(jí)SQL專家Joe Celko針對(duì)數(shù)據(jù)庫的設(shè)計(jì)與編程提出了一系列規(guī)則和建議,內(nèi)容涵蓋命名規(guī)范、代碼版式、鍵的設(shè)計(jì)、數(shù)據(jù)編碼方案、編碼風(fēng)格、SQL中的思考方式等多個(gè)方面。可以作為軟件公司內(nèi)部編程規(guī)范的基礎(chǔ)。書中講述了如何編寫標(biāo)準(zhǔn)、高效、易于維護(hù)的SQL代碼。更重要的是。還教授讀者如何像優(yōu)秀的SQL程序員那樣思考,用查詢的思維方式來理解數(shù)據(jù)庫,從而大大改善SQL編程風(fēng)格并提高SQL編程水平?! ∈澜缂?jí)大師的SQL編程規(guī)范,講述如何編寫標(biāo)準(zhǔn)、高效、易于維護(hù)的SQL代碼,教你像優(yōu)秀的SQL程序員那樣思考。  數(shù)據(jù)庫作為現(xiàn)代軟件應(yīng)用的核心之一,正在發(fā)揮越來越重要的作用。很自然地,SQL在廣大程序員的日常工作中也成了不可或缺的技術(shù)。學(xué)會(huì)SQL并不難,但是要成為優(yōu)秀的SQL程序員就絕非易事了。大部分程序員都是在學(xué)習(xí)并從事了過程化或面向?qū)ο缶幊讨蟛呸D(zhuǎn)到SQL。因此往往帶有濃重的口音,而且常常缺乏自知之明。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    SQL編程風(fēng)格 PDF格式下載


用戶評(píng)論 (總計(jì)0條)

 
 

 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7