出版時間:2009-10 出版社:明日科技、龐婭娟、房大偉、 張躍廷 人民郵電出版社 (2009-10出版) 作者:龐婭娟,房大偉,張躍廷 著 頁數(shù):430
Tag標(biāo)簽:無
前言
SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)語言是一種組織、管理和檢索計算機(jī)數(shù)據(jù)庫存儲數(shù)據(jù)的工具。它是一種計算機(jī)語言,可以用它與數(shù)據(jù)庫交互。事實上,SQL使用的是一種特殊類型的數(shù)據(jù)庫,即關(guān)系數(shù)據(jù)庫。SQL本身不是一個數(shù)據(jù)庫管理系統(tǒng),也不是一個獨立的產(chǎn)品,而是數(shù)據(jù)庫管理系統(tǒng)不可缺少的組成部分,它是與DBMS通信的一種語言和工具。由于其功能豐富,語言簡潔,使用方法靈活,因此備受用戶和計算機(jī)業(yè)界的青睞,被眾多計算機(jī)公司和軟件公司采用。經(jīng)過多年的發(fā)展,SQL語言已成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。目前,雖然介紹SQL的圖書多不勝數(shù),但真正適合初學(xué)者自學(xué)的圖書并不多,本書就在這種情況下應(yīng)運而生,本書精選了大量SQL項目開發(fā)中常見的熱點和關(guān)鍵問題,并以實例的形式對這些問題進(jìn)行了逐個擊破,使得讀者能夠在實踐中學(xué)習(xí)SQL,并迅速成為SQL項目開發(fā)高手。為何選用本書對于初學(xué)者,本書提供了四位一體的全新學(xué)習(xí)方式,可以幫助讀者在編程中不斷體會編程樂趣,快速提高編程能力。下面是四位一體式學(xué)習(xí)方式圖。圖書(光盤源程序)+視頻錄像講解(本書提供8小時實例錄像)+實踐練習(xí)任務(wù)(光盤提供實踐練習(xí)源程序)+網(wǎng)上支持(實例視頻講解和論壇支持服務(wù))。
內(nèi)容概要
《SQL范例完全自學(xué)手冊》是一本集查詢、使用、學(xué)習(xí)和練習(xí)為一體的自學(xué)手冊,書中介紹了應(yīng)用SQL進(jìn)行開發(fā)的各種技術(shù)和技巧。全書分為17章,內(nèi)容包括SQL基本查詢,WHERE子句過濾,ORDERBY子句排序,數(shù)值查詢,字符串查詢,日期查詢,聚合數(shù)據(jù)檢索,分組統(tǒng)計數(shù)據(jù),子查詢,交叉表、遞歸查詢與分布式查詢,插入、更新和刪除數(shù)據(jù),XML數(shù)據(jù)檢索,優(yōu)化操作,管理和維護(hù)數(shù)據(jù)庫、SQL編程與應(yīng)用等?!禨QL范例完全自學(xué)手冊》精選了154個典型實例,所選實例覆蓋了SQL數(shù)據(jù)庫開發(fā)中的熱點問題和關(guān)鍵問題。全書按實際應(yīng)用進(jìn)行分類,可以使讀者在短時間內(nèi)掌握更多實用技術(shù),快速提高編程水平。 《SQL范例完全自學(xué)手冊》附有配套DVD光盤,光盤中提供了實例的全程視頻講解及所有實例源代碼,這些源代碼都經(jīng)過精心調(diào)試,在WindowsXP、Windows2000和Windows2003下測試通過?! 禨QL范例完全自學(xué)手冊》內(nèi)容詳盡,實例豐富,非常適合作為編程人員及項目開發(fā)人員的學(xué)習(xí)用書。
書籍目錄
第1章 SQL基本查詢 實例001 在SELECT語句中使用計算列及列別名 2實例002 定義批處理(BEGIN...END語句) 4實例003 查詢指定行數(shù)據(jù) 7實例004 去除結(jié)果集中的重復(fù)行/列數(shù)據(jù)(DISTINCT關(guān)鍵字) 9實例005 計算數(shù)據(jù)在結(jié)果集中的行號(ROW_NUMBER()函數(shù)) 11實例006 隨機(jī)查詢n行數(shù)據(jù)(NEWID()函數(shù)) 13實例007 查詢指定長度的文本類型數(shù)據(jù)(READTEXT命令) 15實例008 格式化結(jié)果集數(shù)據(jù)(CONVERT()函數(shù)、CAST()函數(shù)) 18實例009 使用iif()函數(shù)根據(jù)指定條件顯示查詢結(jié)果 21實例010 利用查詢結(jié)果集生成表/臨時表 22第2章 SELECT語句:WHERE子句過濾 實例011 運用AND與OR運算符有效的排列查詢條件 28實例012 使用比較運算符查詢指定范圍內(nèi)的數(shù)據(jù) 30實例013 通過IN運算符給出查詢范圍 33實例014 使用BETWEEN/NOT BETWEEN...AND查詢范圍數(shù)據(jù) 35實例015 利用LIKE并引用通配符、轉(zhuǎn)義字符進(jìn)行模糊查詢 38實例016 查詢?yōu)榭?不為空的數(shù)據(jù)(IS NULL/IS NOT NULL) 41實例017 在查詢中處理字段值為NULL的數(shù)據(jù) 44實例018 使用謂詞查詢數(shù)據(jù)(ALL/ANY) 46實例019 通過EXISTS運算符查詢符合條件的數(shù)據(jù) 48實例020 使用NOT運算符查詢否定條件的數(shù)據(jù)(與運算符等效) 51第3章 SELECT語句:ORDER BY子句排序 實例021 多字段的升序/降序排列查詢結(jié)果集 56實例022 按照姓氏筆畫/音序排序 57實例023 按升序排列“名列前三”的數(shù)據(jù) 60實例024 對重復(fù)值的排序 62實例025 在ORDER BY子句中使用表達(dá)式 63實例026 在ORDER BY子句中使用日期函數(shù) 66實例027 排序包含字母及數(shù)字的字段 69實例028 隨機(jī)排序指定行數(shù)的查詢結(jié)果集 71實例029 根據(jù)一定條件進(jìn)行動態(tài)排序 72實例030 在視圖中使用ORDER BY子句 75第4章 數(shù)值查詢 實例031 在查詢時對數(shù)值進(jìn)行取整 78實例032 對查詢到的數(shù)值四舍五入 80實例033 利用三角函數(shù)計算數(shù)值 83實例034 根據(jù)查詢數(shù)值求弧度/角度(DEGREES()函數(shù)、RADIANS()函數(shù)) 91實例035 求數(shù)值的指數(shù)/對數(shù) 93實例036 實現(xiàn)數(shù)值的進(jìn)制轉(zhuǎn)換 98實例037 根據(jù)生成的隨機(jī)數(shù)查詢記錄(RAND()函數(shù)) 100實例038 根據(jù)查詢數(shù)值的符號顯示具體文本(SING()函數(shù)) 101實例039 求數(shù)值的絕對值(ABS()函數(shù)) 103實例040 判斷是否為數(shù)值(ISNUMERIC()函數(shù)) 105第5章 字符串查詢 實例041 在字符串中去除空格 108實例042 在字符串中插入空格 110實例043 實現(xiàn)字符串的大小寫轉(zhuǎn)換 113實例044 轉(zhuǎn)換為字符數(shù)據(jù) 115實例045 返回字符在字符串中出現(xiàn)的次數(shù) 119實例046 返回字符串中的子串 122實例047 刪除字符串中的子串 123實例048 查找并替換字符串 125實例049 比較兩個字符串 127第6章 日期查詢 實例050 查詢指定時間段的數(shù)據(jù) 130實例051 轉(zhuǎn)換日期格式 132實例052 計算兩個日期的距離(DATEDIFF()函數(shù)) 135實例053 按指定日期的天、月、年分別查詢數(shù)據(jù) 137實例054 返回當(dāng)前日期時間及對應(yīng)星期數(shù) 140實例055 查詢指定時間間隔的數(shù)據(jù)(DATEADD()函數(shù)) 142實例056 綜合運用DATEDIFF()與DATEADD()函數(shù) 144實例057 判斷是否為日期(ISDATE()函數(shù)) 147第7章 聚合數(shù)據(jù)檢索 實例058 對多列的求和運算 150實例059 求大于平均值的數(shù)據(jù) 152實例060 求最大/最小值 155實例061 求無重復(fù)/不為空的記錄數(shù) 158實例062 隨機(jī)查詢求和 161實例063 統(tǒng)計某個值出現(xiàn)的次數(shù) 163第8章 分組統(tǒng)計數(shù)據(jù) 實例064 分組匯總數(shù)據(jù)并排序 168實例065 計算各組數(shù)據(jù)的平均值(將NULL轉(zhuǎn)換為0) 169實例066 使用ALL查詢?nèi)糠纸M 172實例067 使用ROLLUP生成部分分組 174實例068 使用CUBE生成帶有小計和總計的交叉表 176實例069 使用WHERE子句與HAVING子句指定查詢及分組條件 178實例070 使用OVER子句和聚合函數(shù)實現(xiàn)分區(qū)聚合數(shù)據(jù) 181實例071 使用COMPUTE返回數(shù)據(jù)明細(xì)及匯總結(jié)果(多個結(jié)果集) 184實例072 使用COMPUTE BY返回分組信息及對應(yīng)匯總數(shù)據(jù)(多個結(jié)果集) 186第9章 子查詢 實例073 在SELECT子句中使用子查詢 190實例074 在WHERE子句中通過比較運算符引入子查詢 192實例075 在FROM子句中使用子查詢 195實例076 使用IN運算符引入子查詢 197實例077 使用NOT IN運算符引入子查詢 200實例078 利用ALL謂詞引入子查詢 202實例079 利用ANY/SOME謂詞引入子查詢 205實例080 使用EXISTS運算符引入子查詢 207實例081 使用NOT EXISTS運算符引入子查詢 210實例082 在HAVING子句使用子查詢過濾一組數(shù)據(jù) 211實例083 在UPDATE語句中使用子查詢更新數(shù)據(jù) 213實例084 在INSERT INTO語句中使用子查詢添加數(shù)據(jù) 215實例085 在DELETE語句中使用子查詢刪除數(shù)據(jù) 217第10章 連接查詢 實例086 實現(xiàn)兩表的笛卡爾乘積查詢(CROSS JOIN) 220實例087 在WHERE子句中設(shè)置連接條件 221實例088 使用INNER JOIN實現(xiàn)自身連接 223實例089 使用INNER JOIN實現(xiàn)等值連接 224實例090 使用INNER JOIN實現(xiàn)不等連接 225實例091 多表內(nèi)連接的查詢 227實例092 使用LEFT OUTER JOIN以左表為依據(jù)查詢匹配數(shù)據(jù) 228實例093 使用RIGHT OUTER JOIN以右表為依據(jù)查詢匹配數(shù)據(jù) 230實例094 使用FULL JOIN查詢兩表匹配的所有數(shù)據(jù) 232實例095 多表外連接的查詢 233第11章 組合查詢 實例096 使用UNION組合多個結(jié)果集 238實例097 使用UNION ALL組合保留重復(fù)數(shù)據(jù) 239實例098 排序組合后的查詢數(shù)據(jù) 241實例099 求兩個結(jié)果集的交集(INTERSECT運算符) 243實例100 求兩個結(jié)果集的差集(EXCEPT運算符) 245第12章 交叉表、遞歸與分布式查詢 實例101 使用CASE語句指定顯示的文本 248實例102 使用CASE語句更新數(shù)據(jù) 249實例103 通過CASE語句生成靜態(tài)交叉表 251實例104 實現(xiàn)結(jié)果集中記錄的行列轉(zhuǎn)換 253實例105 使用PIVOT運算符實現(xiàn)交叉表 256實例106 使用UNPIVOT運算符反轉(zhuǎn)交叉表 259實例107 CTE遞歸查詢 262實例108 調(diào)用系統(tǒng)存儲過程進(jìn)行分布式查詢 265實例109 使用函數(shù)實現(xiàn)分布式查詢 267實例110 運用分布式事務(wù) 269第13章 插入、更新和刪除數(shù)據(jù) 實例111 使用INSERT INTO語句插入數(shù)據(jù) 272實例112 使用UNION ALL運算符批量插入數(shù)據(jù) 275實例113 使用INSERT SELECT語句批量插入數(shù)據(jù) 277實例114 實現(xiàn)數(shù)據(jù)庫與Excel數(shù)據(jù)的導(dǎo)入導(dǎo)出 279實例115 實現(xiàn)SQL Server與Access數(shù)據(jù)的導(dǎo)入導(dǎo)出 283實例116 使用UPDATE語句更新數(shù)據(jù) 286實例117 使用DELETE語句刪除數(shù)據(jù) 289實例118 刪除表中相同的行數(shù)據(jù)(游標(biāo)) 292實例119 刪除完全重復(fù)的行(臨時表) 299第14章 XML數(shù)據(jù)檢索 實例120 以XML形式顯示檢索數(shù)據(jù)(FOR XML RAW) 304實例121 檢索數(shù)據(jù)以生成XML文件(FOR XML AUTO) 310實例122 將XML數(shù)據(jù)插入到數(shù)據(jù)表中 314實例123 利用XML索引檢索數(shù)據(jù) 317實例124 查找XML節(jié)點(QUERY方法) 321實例125 提取XML節(jié)點元素值(VALUE方法) 324實例126 插入XML元素節(jié)點 327實例127 刪除XML元素節(jié)點 331實例128 更新XML元素節(jié)點的值 334實例129 將XML節(jié)點轉(zhuǎn)變?yōu)閷?yīng)字段(NODES方法) 337第15章 優(yōu)化操作 實例130 創(chuàng)建索引加快數(shù)據(jù)引用(非聚集、惟一、聚集索引) 342實例131 使用約束維護(hù)數(shù)據(jù)完整性(主鍵、惟一、檢查約束) 349實例132 使用視圖格式化檢索數(shù)據(jù) 354實例133 執(zhí)行帶參數(shù)的存儲過程以動態(tài)檢索數(shù)據(jù) 359實例134 定義觸發(fā)器以自動執(zhí)行SQL語句 364實例135 異常錯誤處理 369實例136 應(yīng)用事務(wù)維護(hù)數(shù)據(jù)的一致性 371實例137 在事務(wù)中的表級鎖定 374實例138 實現(xiàn)事務(wù)并發(fā)控制 377第16章 管理和維護(hù)數(shù)據(jù)庫 實例139 創(chuàng)建/修改數(shù)據(jù)庫 384實例140 創(chuàng)建/修改數(shù)據(jù)表 388實例141 備份數(shù)據(jù)庫 394實例142 恢復(fù)數(shù)據(jù)庫 397實例143 附加/分離數(shù)據(jù)庫 400實例144 查看數(shù)據(jù)庫對象 402實例145 加密數(shù)據(jù)庫中的數(shù)據(jù) 405實例146 防止SQL注入攻擊 406第17章 SQL編程與應(yīng)用 實例147 在C語言中使用SQL通信區(qū) 410實例148 嵌入式SQL中的主變量 412實例149 嵌入式SQL中的游標(biāo)操作 415實例150 在高級語言中嵌入SQL語句 417實例151 在數(shù)據(jù)庫管理系統(tǒng)中嵌入SQL語句 420實例152 預(yù)編譯嵌入式SQL語句 422實例153 執(zhí)行嵌入式SQL語句 424實例154 動態(tài)執(zhí)行SQL語句 424附錄
章節(jié)摘錄
插圖:技術(shù)要點通過創(chuàng)建非簇索引、惟一索引、多字段簇索引可以加快訪問數(shù)據(jù)的速度。1.索引的概念索引是一個單獨的、物理的數(shù)據(jù)庫結(jié)構(gòu),在SQL Server中,索引是為了加速對表中數(shù)據(jù)行的檢索而創(chuàng)建的一種分散存儲結(jié)構(gòu)。它是針對一個表而建立的,每個索引頁面中的行都含有邏輯指針,指向數(shù)據(jù)表中的物理位置,以便加速檢索物理數(shù)據(jù)。因此,對表中的列是否創(chuàng)建索引,將對查詢速度有很大的影響。一個表的存儲是由兩部分組成的,一部分用來存放表的數(shù)據(jù)頁,另一部分存放索引頁。通常索引頁面對于數(shù)據(jù)頁面來說小得多。在進(jìn)行數(shù)據(jù)檢索時,系統(tǒng)首先搜索索引頁面,從中找到所需數(shù)據(jù)的指針,然后直接通過該指針從數(shù)據(jù)頁面中讀取數(shù)據(jù),從而提高查詢速度。數(shù)據(jù)庫使用索引的方式與使用書的目錄很相似,索引允許用戶不必像翻閱完整個書那樣就能迅速地找到所需要的信息。在數(shù)據(jù)庫中,使用索引可以迅速地找到表中的數(shù)據(jù),而不必掃描整個表。在了解了索引的基本概念的同時,講解索引的優(yōu)缺點及使用索引的條件:(1)使用索引的優(yōu)點。創(chuàng)建惟一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的惟一性。大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要原因。加速表與表之間的連接,特別是在實現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。在使用分組(GROUP BY)和排序(0RDER BY)子句進(jìn)行數(shù)據(jù)檢索時,同樣可以減少查詢中分組和排序的時間。通過使用索引,可以在查詢的過程中使用優(yōu)化隱藏器,提高系統(tǒng)的性能。(2)使用索引的缺點。創(chuàng)建索引和維護(hù)索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。索引需要占物理空間。除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立簇索引,那么需要的空間就會更大。當(dāng)對表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時候,索引也要動態(tài)的維護(hù),降低了數(shù)據(jù)的維護(hù)速度。(3)使用索引的條件。考慮建立索引的列如下。表的主鍵。一般而言,存取表的最常用的方法是通過主鍵來進(jìn)行的。因此,應(yīng)該在主鍵上建立索引。連接中頻繁使用的列(外鍵)。這是因為用于連接的列若按順序存放,系統(tǒng)可以很快地執(zhí)行連接。在某一范圍內(nèi)頻繁搜索的列和按排序頻繁檢索的列。建立索引是需要一定的開銷的(包括時間和空間上)。當(dāng)進(jìn)行INSERT和UPDATE操作時,維護(hù)索引也要花費時間和空間,因此,沒有必要對表中的所有列都建立索引。如何有效地使用索引要看建立索引和維護(hù)索引的代價與因建立索引所節(jié)省時間相比較而定。一般來說,如下情況的列建議不考慮建立索引。很少或從來不在查詢中引用的列,因為系統(tǒng)很少或從來不根據(jù)這個列的值去查找行。只有兩個或若干個值的列(例如性別:男/女),顯現(xiàn)不出使用索引的好處。
編輯推薦
《SQL范例完全自學(xué)手冊》:軟件工程師入門,雙格式視頻編程隨身學(xué)。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載