版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SQLserver基礎(chǔ)理論學(xué)習(xí):信息體系結(jié)構(gòu)原則1、信息體系結(jié)構(gòu)原則1.1信息管理的3個(gè)主要方面:數(shù)據(jù)庫(kù)設(shè)計(jì)和開(kāi)發(fā)、企業(yè)數(shù)據(jù)中心的管理、商業(yè)智能分析1.2信息體系結(jié)構(gòu)原則首先必須有詳細(xì)的信息清單,包括信息的位置、來(lái)源、敏感性、當(dāng)前和未來(lái)信息的價(jià)值以及當(dāng)前的擁有者1.3要確保數(shù)據(jù)能夠在未來(lái)使用,必須降低當(dāng)前設(shè)計(jì)的耦合程度。1.4數(shù)據(jù)存儲(chǔ)目標(biāo)1.4.1簡(jiǎn)單性要對(duì)復(fù)雜性感到敬畏,應(yīng)不斷調(diào)整設(shè)計(jì),直到整個(gè)設(shè)計(jì)小組都認(rèn)為它是能夠滿足需求的最簡(jiǎn)單解決方案。字典中“困難”的同義詞包含“復(fù)雜”是有道理的。簡(jiǎn)單的解決方案通常是優(yōu)雅而容易理解的。(應(yīng)讓事情盡可能簡(jiǎn)單,且不能再簡(jiǎn)單一愛(ài)因斯坦)做到簡(jiǎn)單性的要求:對(duì)需求有全面認(rèn)識(shí)掌握大量可供參考的模式和解決方案對(duì)技術(shù)規(guī)則和行業(yè)術(shù)語(yǔ)有全面認(rèn)識(shí)創(chuàng)造性掌握行業(yè)知識(shí),直到何時(shí)及如何改善技術(shù)系統(tǒng)對(duì)用于實(shí)現(xiàn)設(shè)計(jì)的工具和設(shè)備以及解決方案的運(yùn)行環(huán)境有深入認(rèn)識(shí)設(shè)計(jì)人員互相信任、分享想法而不考慮個(gè)人得失不斷優(yōu)化設(shè)計(jì),直到設(shè)計(jì)出優(yōu)雅而簡(jiǎn)單的設(shè)計(jì)方案(8)對(duì)復(fù)雜性抱有健康的敬畏心態(tài)1.4.2有用性有用性包括三點(diǎn):(1)滿足組織需求(2)適應(yīng)性:設(shè)計(jì)與數(shù)據(jù)存儲(chǔ)的范圍和用途相稱數(shù)據(jù)存儲(chǔ)設(shè)計(jì)模型包括:關(guān)系DBMS、對(duì)象數(shù)據(jù)庫(kù)、對(duì)象/關(guān)系數(shù)據(jù)庫(kù)、通用模式、數(shù)據(jù)倉(cāng)儲(chǔ)數(shù)據(jù)庫(kù)的范圍包含數(shù)據(jù)在組織內(nèi)的使用度(個(gè)人、部門、營(yíng)業(yè)單位、公司、企業(yè))以及數(shù)據(jù)的持續(xù)性(當(dāng)前、當(dāng)年、永遠(yuǎn))(3)數(shù)據(jù)格式可供應(yīng)用程序使用以及易于提取數(shù)據(jù)存儲(chǔ)配置包括5種類型:(1)主數(shù)據(jù)存儲(chǔ):運(yùn)營(yíng)數(shù)據(jù)庫(kù)或聯(lián)機(jī)數(shù)據(jù)處理數(shù)據(jù)庫(kù),用于收集第一代交易數(shù)據(jù)。在組織中必不可少,且是唯一的。主數(shù)據(jù)庫(kù)存儲(chǔ)需要在方便數(shù)據(jù)檢索和數(shù)據(jù)更新之間取得平衡。每個(gè)運(yùn)營(yíng)單位都可能有個(gè)主數(shù)據(jù)存儲(chǔ)。(2)緩存數(shù)據(jù)存儲(chǔ):可選,是主數(shù)據(jù)存儲(chǔ)的只讀拷貝,用于提供數(shù)據(jù),減輕主數(shù)據(jù)庫(kù)的負(fù)載。優(yōu)化它,可提供數(shù)據(jù)庫(kù)檢索性能。(3)引用數(shù)據(jù)存儲(chǔ):主要為只讀,存儲(chǔ)組織中較少變更的數(shù)據(jù)。類似圖書(shū)館的目錄區(qū)。優(yōu)化它,也可很高檢索性能。(4)數(shù)據(jù)倉(cāng)庫(kù):從企業(yè)多個(gè)主數(shù)據(jù)存儲(chǔ)收集大量數(shù)據(jù),并使用提取、轉(zhuǎn)化和加載過(guò)程,將格式和架構(gòu)轉(zhuǎn)為通用,簡(jiǎn)化數(shù)據(jù)檢索。同時(shí)存儲(chǔ)歷史記錄,減輕運(yùn)營(yíng)數(shù)據(jù)存儲(chǔ)的負(fù)載。組織必須有一個(gè)通用的數(shù)據(jù)倉(cāng)庫(kù)。主要任務(wù)是數(shù)據(jù)檢索和分析。5)數(shù)據(jù)集市:數(shù)據(jù)倉(cāng)庫(kù)的子集,包含經(jīng)過(guò)預(yù)先匯總的數(shù)據(jù)。主數(shù)據(jù)存儲(chǔ)的設(shè)計(jì)方法(1)關(guān)系DBMS傳統(tǒng)的數(shù)據(jù)庫(kù),它講類似或相關(guān)的數(shù)據(jù)放到一個(gè)表中。適合滿足穩(wěn)定的數(shù)據(jù)架構(gòu)需求,這種需求只包含少量的is_a關(guān)系。(2)面向?qū)ο蟮腄BMS00DBMS必須存儲(chǔ)對(duì)象,因此判斷OODBMS優(yōu)劣的一個(gè)重要標(biāo)準(zhǔn)就是它能否存儲(chǔ)復(fù)雜的對(duì)象,如XML文件、.net文件OODBMS非常適合這樣的程序:架構(gòu)可能發(fā)生重大變化、包括復(fù)雜數(shù)據(jù)類型、類之間涉及多個(gè)is-a關(guān)系、包括復(fù)雜的多關(guān)聯(lián)以及要求將數(shù)據(jù)同應(yīng)用程序輕松關(guān)聯(lián)起來(lái)。有三種主要的面向?qū)ο蟮臄?shù)據(jù)庫(kù)A對(duì)象持久化數(shù)據(jù)存儲(chǔ)(0PDBMS):相當(dāng)于一個(gè)存儲(chǔ)對(duì)象的狀態(tài)倉(cāng)庫(kù)B面向?qū)ο蟮臄?shù)據(jù)存儲(chǔ)(00DBMS)C對(duì)象/關(guān)系數(shù)據(jù)存儲(chǔ)(0/RDBMS)(3)通用模式DBMS也稱為動(dòng)態(tài)鉆石模式,有時(shí)被用作關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品中的面向?qū)ο蟮臄?shù)據(jù)庫(kù)設(shè)計(jì)。在應(yīng)用程序需要?jiǎng)討B(tài)屬性時(shí),這種設(shè)計(jì)非常有用。1.4.3完整性數(shù)據(jù)實(shí)際上是實(shí)體和屬性,因此數(shù)據(jù)完整性由實(shí)體完整性和域完整性組成。(1)實(shí)體完整性:本質(zhì)就是規(guī)范化2)域完整新:保證屬性只取有效值,包括為空性。引用完整性:外鍵域的完整性用戶定義完整性事務(wù)完整性:事務(wù)是一個(gè)邏輯工作單元,如插入100行。數(shù)據(jù)庫(kù)產(chǎn)品的質(zhì)量是根據(jù)其事務(wù)對(duì)ACID屬性的遵循程度衡量的。A(atomicity)原子性:事務(wù)必須是原子的,這意味著在事務(wù)結(jié)束時(shí),耀目所有操作成功,要么都失敗。C(consistency)—致性:這意味著在事務(wù)執(zhí)行前數(shù)據(jù)庫(kù)處于一致性狀態(tài),事務(wù)結(jié)束后,數(shù)據(jù)庫(kù)回到一致性狀態(tài)。一致性意味著每行和每個(gè)值都與描述一致且滿足所有的約束。I(isolation)隔離性:每個(gè)事務(wù)都必須是隔離的,不受其他事務(wù)的影響,不管是否有其他事務(wù)執(zhí)行,它都必須使用它開(kāi)始時(shí)的數(shù)據(jù)集繼續(xù)執(zhí)行下去。D(durability)持久性:不管系統(tǒng)是否發(fā)生故障,事務(wù)的結(jié)果都是永久性的。(6)事務(wù)缺陷臟讀:如果事務(wù)能夠讀取其他商務(wù)尚未提交的更新,則被稱為臟讀。臟讀可能導(dǎo)致在讀取的數(shù)據(jù)未提交前,而寫(xiě)入該數(shù)據(jù)的事務(wù)可能被回滾。不可重復(fù)讀:類似臟讀,指事務(wù)能看到其他事務(wù)已提交的數(shù)據(jù)更新。如果兩次讀取得到的結(jié)果不同,則存在不可重復(fù)讀性事務(wù)缺陷。虛幻行:危害最小,指事務(wù)的更新操作不僅影響結(jié)果集的數(shù)據(jù)值,還導(dǎo)致select語(yǔ)句返回不同記錄集。丟失更新:兩個(gè)用戶同時(shí)更新一行數(shù)據(jù)時(shí),第二個(gè)覆蓋了第一個(gè)的更新,導(dǎo)致更新丟失。死鎖:多個(gè)項(xiàng)目的多個(gè)事務(wù)爭(zhēng)用一個(gè)數(shù)據(jù)資源時(shí)容易發(fā)生死鎖,需要一個(gè)事務(wù)主動(dòng)放棄或退出。(7)隔離級(jí)別:未提交讀、已提交讀、可重復(fù)讀和可序列化,2005還引入了快照隔離,但容易導(dǎo)致更新丟失。1.4.4性能物理磁盤的性能是最嚴(yán)重的瓶頸,因此提高性能的關(guān)鍵之處在于減少執(zhí)行任務(wù)時(shí)需要讀取的物理頁(yè)數(shù)量。提高性能的技術(shù)有:(1)設(shè)計(jì):簡(jiǎn)化設(shè)計(jì),不要包含過(guò)多的表,過(guò)多游標(biāo)等(2)基于集合的處理:基于集合的優(yōu)秀查詢能夠?qū)φ麄€(gè)數(shù)據(jù)集進(jìn)行處理,且只讀取一次所需數(shù)據(jù)頁(yè),而基于游標(biāo)的解決方案分別對(duì)每一行進(jìn)行處理。(3)索引是查詢和數(shù)據(jù)之間的橋梁,它能減少執(zhí)行表讀取操作時(shí)需要讀取的物理頁(yè)數(shù)。要更精確滴設(shè)計(jì)索引,必須了解數(shù)據(jù)庫(kù)引擎的查詢優(yōu)化器和索引結(jié)果的工作原理。索引有主力提高數(shù)據(jù)讀取的性能,但給寫(xiě)入性能帶來(lái)負(fù)面影響,插入和更新數(shù)據(jù)時(shí),要確保索引數(shù)據(jù)同步。(4)分區(qū):將數(shù)據(jù)分散到多個(gè)磁盤中。(5)緩存:預(yù)先從磁盤中讀取數(shù)據(jù),以便數(shù)據(jù)庫(kù)操作需求時(shí)能夠在內(nèi)存中找到它們。1.4.5可用性恢復(fù)計(jì)劃、冗余性、存檔方式以及網(wǎng)絡(luò)速度都將影響可用性,可用性通常用幾個(gè)9表示,7個(gè)9表示在99.99999%情況下可用,5個(gè)9表示在99.999%可用。以此類推。(1)冗余:找出可存在的故障點(diǎn),并通過(guò)過(guò)程備用解決方案來(lái)避免或降低故障帶來(lái)的影響。(2)恢復(fù):利用備份文件還原數(shù)據(jù)。1.4.6可擴(kuò)展性(1)抽象層:降低數(shù)據(jù)存儲(chǔ)和應(yīng)用程序之間的耦合程度,一種最主要的方法是使用抽象層。這樣可以避免因?yàn)槿狈Ψ庋b導(dǎo)致兩者之間的耦合過(guò)深。(2)歸一化:將類似的尸體組合成一個(gè)實(shí)體。1.4.7安全性(1)數(shù)據(jù)中心的物理安全性(2)操作系統(tǒng)的安全性信息安全還包括:(1)限制訪問(wèn)(2)信息所有權(quán)(3)審核跟蹤優(yōu)化理論和SQLserver(1)架構(gòu)設(shè)計(jì)避免過(guò)于復(fù)雜精心挑選鍵處理可選數(shù)據(jù)實(shí)現(xiàn)抽象層(2)查詢問(wèn)題最佳解決方案復(fù)雜的業(yè)務(wù)邏輯查詢、子查詢、CTE動(dòng)態(tài)生成DDL游標(biāo)對(duì)列表進(jìn)彳丁逆規(guī)范化多賦值標(biāo)量和游標(biāo)交叉表包含透視和case表達(dá)式的查詢導(dǎo)航層次結(jié)構(gòu)UDF或CTE計(jì)算累計(jì)總計(jì)和動(dòng)態(tài)和游標(biāo)(3)索引(4)并發(fā)性:鎖定和阻塞問(wèn)題。nolock并不是很好的解決方式,很危險(xiǎn)??梢圆捎每s短事務(wù)的持續(xù)時(shí)間來(lái)實(shí)現(xiàn)。(5)高級(jí)伸縮性快照隔離分區(qū)表索引視圖servicebrokerSQLserver基礎(chǔ)理論學(xué)習(xí):關(guān)系數(shù)據(jù)庫(kù)建模3.關(guān)系數(shù)據(jù)庫(kù)建模模擬現(xiàn)實(shí)數(shù)據(jù)建模過(guò)程:(1)手機(jī)觀察結(jié)果和需求(2)現(xiàn)實(shí)世界的邏輯表示(3)可見(jiàn)實(shí)體的識(shí)別和設(shè)計(jì)(4)架構(gòu)設(shè)計(jì)(輔助和支持實(shí)體)5)應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)可見(jiàn)實(shí)體可見(jiàn)實(shí)體通常是大多數(shù)人能夠識(shí)別的對(duì)象。(1)每個(gè)元組(行)都是獨(dú)立的(2)主鍵(3)表、行和列3.3識(shí)別多個(gè)實(shí)體(1)多個(gè)對(duì)象(2)對(duì)象之間的關(guān)系(3)組織對(duì)象(4)一致的查找值(5)復(fù)雜對(duì)象3.4關(guān)系模式關(guān)系使用鍵將實(shí)體關(guān)聯(lián)起來(lái),包含如下兩個(gè)主要屬性:基數(shù):在關(guān)系的每一端可能存在的對(duì)象數(shù)可選性:關(guān)系是可選的也是強(qiáng)制的(1)輔助實(shí)體和外鍵兩個(gè)對(duì)象彼此相關(guān)聯(lián)時(shí),通常一個(gè)實(shí)體為主實(shí)體,另一個(gè)實(shí)體為輔助實(shí)體。主實(shí)體中的一個(gè)對(duì)象將關(guān)聯(lián)到輔助實(shí)體中的多個(gè)對(duì)象或元組。(2)關(guān)系基數(shù)指在關(guān)系的每一端有多少元組。在關(guān)系的主鍵端只能有一個(gè)元組,而在外鍵端可以有多個(gè)元組。(3)關(guān)系的可選性:可選關(guān)系和強(qiáng)制關(guān)系對(duì)于數(shù)據(jù)庫(kù)的完整性非常重要。4)繪制數(shù)據(jù)模型關(guān)系圖ChenER關(guān)系圖繪制方法非常簡(jiǎn)單,用sisio即可。(5)關(guān)系種類一對(duì)多一對(duì)一超類/子類多對(duì)多(6)類別實(shí)體有時(shí)也稱為查找表,(7)自反關(guān)系在兩個(gè)相同類型的實(shí)體之間建立關(guān)系,比如人與人之間的上下級(jí)關(guān)系,家庭成員之間的關(guān)系等。規(guī)范化規(guī)范化是減少更新異常的工具。(1)實(shí)體/屬性的設(shè)計(jì)原則:每個(gè)數(shù)據(jù)庫(kù)實(shí)體必須描述一個(gè)“事務(wù)”屬性和事務(wù)之間必須存在一對(duì)一的關(guān)系每個(gè)屬性必須描述其所屬實(shí)體,而不能描述其相關(guān)的實(shí)體。(2)范式規(guī)范化通常以范式的方式定義。每種范式都描述了設(shè)計(jì)實(shí)體和屬性時(shí)可能出現(xiàn)的錯(cuò)誤,并提供了糾正這種錯(cuò)誤的規(guī)則。因此范式類似于書(shū)面語(yǔ)言的語(yǔ)法規(guī)則。規(guī)范化數(shù)據(jù)庫(kù)與平面文件數(shù)據(jù)庫(kù)比,優(yōu)點(diǎn)如下:消除重復(fù)存儲(chǔ)減少鎖的爭(zhēng)用縮小文件數(shù)據(jù)建模人員應(yīng)該一開(kāi)始就按照第三范式設(shè)計(jì)邏輯架構(gòu)。(3)第一范式符合條件A每個(gè)數(shù)據(jù)單元都是用標(biāo)量屬性表示的,標(biāo)量值指的是“可以用標(biāo)尺上的一個(gè)點(diǎn)表示”的值B所有數(shù)據(jù)必須用唯一屬性表示,每個(gè)屬性都必須有唯一的名稱和用途。C所有的數(shù)據(jù)都必須用唯一的元組表示。(4)第二范式確保每個(gè)屬性是實(shí)體屬性。每個(gè)屬性都必須有對(duì)應(yīng)的主鍵。如果其他屬性只依賴于主鍵的一個(gè)屬性,而不依賴于主鍵的其他屬性,這被稱為部分依賴,違反了第二范式。(5)第三范式檢查傳遞依賴。傳遞依賴和部分依賴的相似之處在于,他們值得都是屬性不完全依賴于主鍵。當(dāng)A依賴于B,B依賴于主鍵時(shí),就發(fā)生了傳遞依賴。同第二范式一樣,解決方式是將非依賴屬性移到新實(shí)體中。*如果實(shí)體有很好的主鍵,每個(gè)屬性都是標(biāo)量且都完全依賴于主鍵,則邏輯設(shè)計(jì)符合第三方式,大多數(shù)數(shù)據(jù)庫(kù)設(shè)計(jì)滿足第三范式即可。(6)BCNF范式位于三四范式之間,用于處理實(shí)體有兩組主鍵的問(wèn)題。BCNF規(guī)定,在這種情況下,應(yīng)將實(shí)體拆分為兩個(gè)實(shí)體,每個(gè)實(shí)體包含一個(gè)主鍵。7)第四范式用于處理復(fù)雜的符合主鍵導(dǎo)致的問(wèn)題,如果將兩個(gè)相互獨(dú)立的屬性組合成主鍵,同時(shí)還要有第三個(gè)屬性,如果沒(méi)有第三個(gè)屬性,僅靠著兩個(gè)屬性不能唯一標(biāo)識(shí)實(shí)體,則違反了第四范式。(8)第五范式用于設(shè)計(jì)涉及多個(gè)(3個(gè)以上)實(shí)體的復(fù)雜關(guān)系,如果設(shè)計(jì)正確可以設(shè)計(jì)出三元關(guān)系,其中每個(gè)關(guān)系的基數(shù)都可以是一或多。關(guān)系代數(shù)關(guān)系代數(shù)有8個(gè)關(guān)系運(yùn)算符組成(1)限制:返回符合制定條件的行(2)投影:從數(shù)據(jù)集中返回指定列(3)積:關(guān)系乘法,返回兩個(gè)數(shù)據(jù)集的所有可能的數(shù)據(jù)集合。(4)聯(lián)合:關(guān)系加法和減法,將一個(gè)表垂直堆疊到另一個(gè)表上,將兩個(gè)表合并(5)交集:返回兩個(gè)表中都有的行(6)差集:返回一個(gè)數(shù)據(jù)集中特有的行(7)連接:返回兩個(gè)表的水平合并結(jié)果,合并是根據(jù)都有的行來(lái)匹配(8)除:返回兩個(gè)數(shù)據(jù)集中完全匹配的內(nèi)容另外sqlserver還開(kāi)發(fā)以下功能:子查詢?cè)陉P(guān)系代數(shù)中,使用以下術(shù)語(yǔ):表或數(shù)據(jù)集被稱為關(guān)系或?qū)嶓w行被稱為元組列被稱為屬性SQLserver基礎(chǔ)理論學(xué)習(xí):SQLserver2005體系結(jié)構(gòu)4SQLserver2005體系結(jié)構(gòu)4.1數(shù)據(jù)訪問(wèn)體系結(jié)構(gòu)sqlserver首先是一個(gè)數(shù)據(jù)庫(kù)服務(wù)器(1)客戶/服務(wù)器數(shù)據(jù)庫(kù)模型客戶/服務(wù)器數(shù)據(jù)庫(kù)介紹:客戶進(jìn)程請(qǐng)求服務(wù)器進(jìn)程提供服務(wù),后者處理客戶發(fā)出的請(qǐng)求。所有的數(shù)據(jù)庫(kù)工作都是在數(shù)據(jù)庫(kù)服務(wù)器中執(zhí)行的,完成后講數(shù)據(jù)集的拷貝發(fā)送到客戶端,實(shí)際的數(shù)據(jù)和索引不會(huì)離開(kāi)服務(wù)器。相對(duì)于桌面數(shù)據(jù)庫(kù)(acess),它性能更高,更安全可靠??蛻?服務(wù)器數(shù)據(jù)庫(kù)職能數(shù)據(jù)庫(kù)服務(wù)器職責(zé):A處理數(shù)據(jù)修改和檢索要求B執(zhí)行數(shù)據(jù)密集型處理C實(shí)施所有的數(shù)據(jù)庫(kù)規(guī)則和約束D實(shí)現(xiàn)數(shù)據(jù)安全性數(shù)據(jù)庫(kù)客戶端職責(zé):A以易于識(shí)別、引人入勝和適用的格式將數(shù)據(jù)呈現(xiàn)給用戶B提供使用各種工具、數(shù)據(jù)和報(bào)表的界面C將請(qǐng)求提交給服務(wù)器(2)N層設(shè)計(jì)在客戶/服務(wù)器應(yīng)用程序中,除了客戶端和服務(wù)器進(jìn)程外,還涉及其他進(jìn)程,經(jīng)常使用中間層來(lái)處理連接、連接池和業(yè)務(wù)邏輯。使用中間層可以讓多個(gè)用戶使用為數(shù)不多的數(shù)據(jù)庫(kù)服務(wù)器連接,到要考慮用戶的身份驗(yàn)證方式。在有多個(gè)服務(wù)器可用的情況下,通過(guò)使用通用連接對(duì)象,在服務(wù)器A發(fā)生故障時(shí),將用戶從服務(wù)器A切換到服務(wù)器B將更容易,連接對(duì)象成為能夠檢測(cè)到故障并在服務(wù)器之間切換的單個(gè)點(diǎn)。這種解決方案在使用數(shù)據(jù)庫(kù)鏡像時(shí)非常有用。(3)面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu)(SOA)是客戶/服務(wù)器數(shù)據(jù)庫(kù)模型的替代品,SOA使用標(biāo)準(zhǔn)的HTTP調(diào)用和XML,而不是多個(gè)系統(tǒng)之間編寫(xiě)自定義的客戶/服務(wù)器接口,這樣多個(gè)系統(tǒng)可以用相同的連接口。SOA使用與有多個(gè)超大型系統(tǒng)的大企業(yè),適應(yīng)用作輔助數(shù)據(jù)訪問(wèn)方法,以簡(jiǎn)化同其他超大型系統(tǒng)的通信,除此,不要使用SOASQLserver中的服務(wù)SQLserver不僅僅是一個(gè)關(guān)系數(shù)據(jù)庫(kù)引擎,它是一組與數(shù)據(jù)庫(kù)相關(guān)的服務(wù)和組件,可結(jié)合使用它們來(lái)創(chuàng)建功能強(qiáng)大的數(shù)據(jù)庫(kù)后端解決方案。1)關(guān)系引擎關(guān)系引擎有時(shí)也被稱為數(shù)據(jù)庫(kù)引擎,它是sqlserver的核心,該進(jìn)程負(fù)責(zé)處理所有關(guān)系數(shù)據(jù)庫(kù)的工作。sql是一種描述性語(yǔ)言,這意味著SQL向引擎描述要處理的查詢,引擎負(fù)責(zé)完成其他工作。SQLserver支持在同一臺(tái)物理服務(wù)器中安裝多達(dá)50個(gè)關(guān)系引擎實(shí)例,雖然它們共享一些組件,但每個(gè)實(shí)例都是一個(gè)獨(dú)立的SQLserver(2)Transact-SQLSQL小組擴(kuò)展了ANSI定義,在很多方面進(jìn)行了改進(jìn),添加了新命令,刪了一些命令,這就是Transact-SQL(T-SQL),SQLserver只理解一種語(yǔ)言,那就是T-SQL。(3)VisualStudio和CLRSQLserver最激動(dòng)人心的功能之-'是集成了visualStudio.ManagementStudio是基于VisualStudio集成開(kāi)發(fā)環(huán)境(IDE),SQLserver內(nèi)部操作系統(tǒng)(SQLOS)實(shí)際上是在SQLserver內(nèi)部托管(host)了.net的共同語(yǔ)言運(yùn)行時(shí)(CLR)名詞解釋:CLR是公共語(yǔ)言運(yùn)行時(shí),CommonLanguageRuntime)和Java虛擬機(jī)一樣也是一個(gè)運(yùn)行時(shí)環(huán)境,它負(fù)責(zé)資源管理(內(nèi)存分配和垃圾收集),并保證應(yīng)用和底層操作系統(tǒng)之間必要的分離。IDE,即IntegratedDevelopmentEnvironment,是“集成開(kāi)發(fā)環(huán)境"的英文縮寫(xiě),可以輔助開(kāi)發(fā)程序的應(yīng)用軟件。軟件是用于程序開(kāi)發(fā)環(huán)境的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具。就是集成了代碼編寫(xiě)功能、分析功能、編譯功能、debug功能等一體化的開(kāi)發(fā)軟件套。所有具備這一特性的軟件或者軟件套(組)都可以叫做IDE。如微軟的VisualStudio系列,Borland的C++Builder,Delphi系列等。該程序可以獨(dú)立運(yùn)行,也可以和其它程序并用。(4)ServiceBrokersqlserver2005新增的功能,通過(guò)一個(gè)托管數(shù)據(jù)隊(duì)列,通過(guò)平滑負(fù)載,提高了性能和伸縮性。創(chuàng)建面向服務(wù)的體系結(jié)構(gòu)時(shí),ServiceBroker是一個(gè)重要服務(wù)。復(fù)制服務(wù)全文搜索服務(wù)通過(guò)windows管理工具>服務(wù)來(lái)啟動(dòng)和停止NotificationServices可通過(guò)編程使其根據(jù)數(shù)據(jù)變更發(fā)送信息,消息幾乎可以發(fā)送給任何設(shè)備。(8)服務(wù)器管理對(duì)象(SMO)它是暴露sqlserver的配置和管理功能的一組對(duì)象,使得能夠在.net前段代碼中使用它們。(9)SQL代理可選進(jìn)程,可配置為系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行。分布式事務(wù)協(xié)調(diào)器(DTC)負(fù)責(zé)以兩階段的方式提交跨越多個(gè)SQLserver的事務(wù)。通過(guò)windows管理工具〉服務(wù)來(lái)啟動(dòng)和停止SQLmail讓sqlserver能夠通過(guò)SMTP將電子與偶見(jiàn)發(fā)送到外部郵箱。BusinessIntelligenceServices(BI)商業(yè)智能(BI)是SQLserver2005最擅長(zhǎng)的領(lǐng)域之一。SQLserver2005提供了三種智能服務(wù):(1)IntegrationServices(ISorSSIS,它表示SQLServerIntegrationServices):幾乎可以在任何數(shù)據(jù)源之間傳輸數(shù)據(jù),它是SQLserver的提取-轉(zhuǎn)換-加載(ETL)工具。BI使用圖形工具來(lái)定義如何將數(shù)據(jù)從一個(gè)數(shù)據(jù)源移到另一個(gè)數(shù)據(jù)源。IS包能夠復(fù)制數(shù)據(jù)列,執(zhí)行復(fù)雜的轉(zhuǎn)換和處理數(shù)據(jù)移動(dòng)發(fā)生的異常。IS非常適用于數(shù)據(jù)轉(zhuǎn)換。(2)ReportingServices(RS)(3)AnalysisServices(AS):是一種提供商業(yè)智能或聯(lián)機(jī)分析處理的服務(wù)。能讓開(kāi)發(fā)人員定義包含多維的數(shù)據(jù)集。多維數(shù)據(jù)集中包含根據(jù)超大型數(shù)據(jù)庫(kù)預(yù)先計(jì)算的匯總數(shù)據(jù),讓用戶快捷瀏覽多維數(shù)據(jù)集中的總計(jì)和小計(jì)。這三種服務(wù)都是使用BusinessIntelligenceDevelopmentStudio開(kāi)發(fā)的。SQLserver2005的版本這里說(shuō)的版本(edition)指的是包含的功能集不能的安裝包。而不是SQLserver2000SQLserver2005等版本(version)企業(yè)(開(kāi)發(fā))版標(biāo)準(zhǔn)版工作組版SQLserver速成版SQLservereverywhere版SQLserver的工具和組件(1)SQLservermanagementstudio供管理員和程序開(kāi)發(fā)人員使用的類似visualstudio的集成環(huán)境,其核心是強(qiáng)大的對(duì)象資源管理器。2)SQLServerConfigurationManager這個(gè)工具用于啟動(dòng)和停止各種服務(wù)器,可以通過(guò)開(kāi)始菜單或managementstudio啟動(dòng)它。(3)外圍應(yīng)用配置器默認(rèn)狀況下,很多sqlserver的功能都是被禁用,以減少sqlserver的暴露程度,這些功能大部分都可以使用T-SQL來(lái)啟用。(4)BusinessIntelligenceDevelopmentStudio類似managementstudio,但針對(duì)BI進(jìn)行優(yōu)化。(5)SQL集成幫助(6)SQLProfiler監(jiān)視sqlserver的流量和事件(7)性能監(jiān)視器(8)數(shù)據(jù)庫(kù)優(yōu)化顧問(wèn)(9)命令行實(shí)用程序:SQLCmdBulkCopy這些能夠讓開(kāi)發(fā)人員在DOS提示符下或命令行調(diào)度程序中執(zhí)行SQL代碼或大容量復(fù)制操作。SQLserver2005功能包下載包提供了二十多個(gè)驅(qū)動(dòng)程序以及支持向后兼容及其他系統(tǒng)兼容的代碼,還包含以下有用的工具有實(shí)用程序:SQLserver升級(jí)顧問(wèn)數(shù)據(jù)庫(kù)遷移助理最佳實(shí)踐工具AdventureWorks示例數(shù)據(jù)庫(kù),替代以前的Northwind和Pubs4.8探索元數(shù)據(jù)SQLserver使用四個(gè)系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行自我管理,另外還有一個(gè)model數(shù)據(jù)庫(kù)。Master:包含有關(guān)服務(wù)器中數(shù)據(jù)庫(kù)的信息MSDB:包含諸如備份和作業(yè)等活動(dòng)列表Tempdb:包含用戶、批處理、存儲(chǔ)過(guò)程和SQLserver引擎本書(shū)使用的臨時(shí)表。Reference:該數(shù)據(jù)庫(kù)被隱藏,從master中分離出來(lái),旨在使得升級(jí)服務(wù)包更容易。Model:用于創(chuàng)建新數(shù)據(jù)庫(kù)的模板數(shù)據(jù)庫(kù)。元數(shù)據(jù)是有關(guān)數(shù)據(jù)的信息,SQLserver支持4種元數(shù)據(jù):目錄視圖:提供有關(guān)靜態(tài)元數(shù)據(jù)的信息動(dòng)態(tài)管理視圖和函數(shù):通過(guò)探索服務(wù)器的當(dāng)前狀態(tài),提供有關(guān)諸如內(nèi)存、線程、緩存中的存儲(chǔ)過(guò)程和連接等的數(shù)據(jù)。兼容性視圖:模擬以前版本中的表,用于向后兼容系統(tǒng)架構(gòu)視圖:ANSISQL92標(biāo)準(zhǔn)視圖??捎糜诓榭慈魏螖?shù)據(jù)庫(kù)產(chǎn)品的架構(gòu)。SQL補(bǔ)充學(xué)習(xí)(一):CROSSJOIN1.CROSSJOIN除了內(nèi)連接(innerjion),外連接(leftjoin,rightjoin,fulljoin),還支持交叉連接。交叉連接返回被連接兩個(gè)表的卡迪爾乘積,即:卅氐Q擁曲且曲
CROSSJOIN語(yǔ)法select列名from表名1crossjoin表名2where表名1.列名=表名2.列名CROSSJOIN實(shí)例樣例數(shù)據(jù):序號(hào)姓名語(yǔ)文數(shù)學(xué)序號(hào)姓名語(yǔ)文數(shù)學(xué)地理歷史5蟲(chóng)蟲(chóng)6775596名名閃7743554虹紅益吟4的47834558775AU2MLAU2MJLL要求:用crossjoin語(yǔ)句找出兩表中學(xué)生序號(hào)相同的學(xué)生,并將其所有字段組合在一個(gè)表中。selecta.序號(hào),b.姓名,a.班級(jí),a.年齡,b.語(yǔ)文,b.數(shù)學(xué),b.地理,b.歷史fromTable_4asbcrossjoinTable_5asawherea.序號(hào)=b.序號(hào)執(zhí)行結(jié)果:審結(jié)果1也消息|序號(hào)」姓名班…年???」語(yǔ)??,|數(shù)…地理歷史i4Lj紅紅56檢34489472■:■5屯由676775NULL5?-3G名名15757-743f55'48小小j6558f?75我們可以發(fā)現(xiàn),用下面語(yǔ)句,效果是一致的:selecta.序號(hào),b.姓名,a.班級(jí),a.年齡,b.語(yǔ)文,b.數(shù)學(xué),b.地理,b.歷史fromTable_4asb,Table_5asawherea.序號(hào)=b.序號(hào)注:實(shí)際上將crossjoin替換成“,,”效果相同。如果不加后面的where條件語(yǔ)句,將會(huì)返回32行。SQL補(bǔ)充學(xué)習(xí)(二):自身連接自身連接是指數(shù)據(jù)表與其自身產(chǎn)生連接,因此在實(shí)現(xiàn)時(shí),需要使用別名來(lái)配合使用2.1自身連接實(shí)例樣例數(shù)據(jù):響田FAN切收丸..託mTabljF/ikiiFAJCIlJbh…一工話"4”-WAHFOGDATA...dbo.Table2序號(hào)姓名語(yǔ)文數(shù)學(xué)地理歷史:5蟲(chóng)蟲(chóng)6775flM596名名757755斗虹紅曲斗4遼47834E58775MLMULL用自身連接得出歷史成績(jī)大于70的人的信息。語(yǔ)句:selecta.序號(hào),a.姓名,a.語(yǔ)文,a.數(shù)學(xué),a.地理,a.歷史fromTable_4asa,Table_4asbwherea.序號(hào)=b.序號(hào)andb.歷史>70執(zhí)行結(jié)果:可以看出,它與下面語(yǔ)句效果一致:select*fromTable_4where歷史>70注:實(shí)際上自身連接的操作對(duì)象是數(shù)據(jù)表本身。SQL補(bǔ)充學(xué)習(xí)(三):INTERSECT語(yǔ)句和EXCEPT語(yǔ)句3.INTERSECT語(yǔ)句和EXCEPT語(yǔ)句intersect語(yǔ)句可以用來(lái)查兩個(gè)表中的“公共”數(shù)據(jù)信息,即“交叉”數(shù)據(jù)信息。INTERSECT返回INTERSECT操作數(shù)左右兩邊的兩個(gè)查詢都返回的所有非重復(fù)值。EXCEPT語(yǔ)句則是用來(lái)查詢上述“公共”信息“除外”才信息。EXCEPT從左查詢中返回右查詢沒(méi)有找到的所有非重復(fù)值。而與UNION聯(lián)合查詢語(yǔ)句一樣,INTERSECT語(yǔ)句和EXCEPT語(yǔ)句查詢的兩個(gè)表必須具有相同的結(jié)構(gòu),即他們的列必須相似,數(shù)目相等,順序相同,且數(shù)據(jù)類型兼容。INTERSECT語(yǔ)句和EXCEPT語(yǔ)句select列名from表名1intersectselect列名from表名2select列名from表名1exceptselect列名from表名23.2intersect實(shí)例樣例數(shù)據(jù).dbi>.Taltle.lWABF^DATA...LgueryS.5,ql*:<W^A1T5DATA...db^.Table,idname5^hooladdress.dsts?1開(kāi)明BEIJIPJG■2010-1-1OiOOiOO2'小明三峽XIANGFAN切1詁-環(huán)0:00:00WIIII育才BEIJING19SS-4-Z0:Q0:Q04蟲(chóng)里明天2006-4-30:00:00*ML402/1O2,f[!ULLAUZiA9FAI?DATA...dbo.Table_B?WABFAJJGDm...dbo.TableJ'ffAHTMGBATA...LQueryl.sqlfid姓躬地址時(shí)間1步名肓才BEIJINGio-L-ia:oa:oa2水明三映地AM略FAM201-3-4-4ft:0ft:00?*ML^ULLAU271Wnu.i要求:求出上面兩表中的共同部分。姓名姓名,SELECT[id],[姓名],[學(xué)校],[地址],[時(shí)間]FROM[mydata].[dbo].[Table_6]intersectSELECT[id],[name],[school],[address],[data]FROM[mydata].[dbo].[Table_1]執(zhí)行結(jié)果:r結(jié)果自消息id姓名1學(xué)校地址時(shí)間1不明三嗾:.^lANGFAN2013-04-0400:30:00.000要求:輸出上面兩表中共同信息除外的信息SELECT[id],[姓名],[學(xué)校],[地址],[時(shí)間]FROM[mydata].[dbo].[Table_6]exceptSELECT[id],[name],[school],[address],[data]FROM[mydata].[dbo].[Table_1]執(zhí)行結(jié)果:J結(jié)果|由消息idi姓名{學(xué)校也址時(shí)間11小名育才BEIJING'2010-01-0100:00:00.300注:輸出結(jié)果列名與第一個(gè)select語(yǔ)句中的表的列名一致。SQL補(bǔ)充學(xué)習(xí)(四):在select語(yǔ)句中使用子查詢4.子查詢子查詢是指將查詢結(jié)果作為另一個(gè)查詢參數(shù)的查詢4.1在select語(yǔ)句中使用子查詢實(shí)例-血-tfANFAUGDATA-.ueryl4.sql+摘要姓名|學(xué)校地址年齡時(shí)間小毛巨九.南昌…i&2004-6-70:00:00張與新東方北京…i+21]05-6-50:00:00化化育才北京…2008-^-40;00;00MILrwmL/im要求:要求求出每個(gè)學(xué)生與平均年齡的差距語(yǔ)句:select年齡,(selectAVG(年齡)fromTable_2)as平均年齡,(年齡-(selectAVG(年齡)fromTable_2))as與平均年齡差距fromTable_2執(zhí)行結(jié)果:SQL補(bǔ)充學(xué)習(xí)(五):在from語(yǔ)句中使用子語(yǔ)句5.在from語(yǔ)句中使用子語(yǔ)句在select語(yǔ)句中的from子句中,也經(jīng)常會(huì)用到子查詢5.1在from語(yǔ)句中使用子語(yǔ)句實(shí)例樣例數(shù)據(jù):丸..心o.TabljF丿曾AWAJGIllbk…起。一工話臨4上WAHFA1TGDATA...dbo.Tat.le2序號(hào)姓名語(yǔ)文數(shù)學(xué)地理匝史■5蟲(chóng)蟲(chóng)6775596名名.7577胃55斗虹紅斗4S947834558775MSAM4WMS要求:輸出學(xué)生各科成績(jī)總分,按從高到底排
select*from(select姓名,sum(語(yǔ)文+數(shù)學(xué)+歷史+地理)as總分fromTable_4groupby姓名)tablorderby總分執(zhí)行結(jié)果:J■■果爲(wèi)捎息姓名總分[中至HNULL紅紅20^名名25D不小251SQL補(bǔ)充學(xué)習(xí)(六):在where語(yǔ)句中使用子查詢6.在where語(yǔ)句中使用子查詢實(shí)例:樣例數(shù)據(jù)■-叢-血一饑業(yè)2丫""WANFAUGDATA-.u&ryl4.eqL*j摘要姓名學(xué)校地址年齡時(shí)間小毛巨九.南昌i&2004-6-70:00:00張與新東方北京…i+2j]05-6-50:00:00化化育才北京…2008-^-40;00;00?*MILrwmL/im要求:要求求出年齡大于平均年齡的每個(gè)學(xué)生與平均年齡的差距語(yǔ)句:select年齡,(selectAVG(年齡)fromTable_2)as平均年齡,(年齡-(selectAVG(年齡)fromTable_2))as與平均年齡差距fromTable_2where年齡>=(selectAVG(年齡)fromTable_2)執(zhí)行結(jié)果:圉皓果]冶消息1姓名年…平均年…與平均年齡差距-ft--1-1-化化2418SQL補(bǔ)充學(xué)習(xí)(七):IN語(yǔ)句的子查詢7.in語(yǔ)句的子查詢7.1in語(yǔ)句的子查詢實(shí)例樣例數(shù)據(jù)表-Abo.TaBle2WAHFAITGDATA...ueryl4.sql*摘要姓名丨學(xué)校地址年齡時(shí)間小毛巨人,南畠|>11&2004-6-70;00;00張與新東方北京…1+21105-6-50:00:00化化育才北京…24-2008-4-40:00:00MILML/im要求:用in語(yǔ)句子查詢查詢出年齡小于20的語(yǔ)句如下:select姓名,學(xué)校,地址,年齡fromTable_2where姓名in(select姓名fromTable_2where年齡<20)執(zhí)行結(jié)果:結(jié)果臥消息|姓名學(xué)校'地址年齡|1i小車j:m南2張與新東方北京14SQL補(bǔ)充學(xué)習(xí)(八):在多表查詢中使用子查詢?cè)诙啾聿樵冎惺褂米硬樵冊(cè)诙啾聿樵冎惺褂米硬樵儗?shí)例樣例數(shù)據(jù):’fAaFAM^BATA...dbo.Iable5WABFAJTGDkTA...dbo.Table.序曇班級(jí)年齡115E45Q454E6567615756036眥£/imML要求:輸出語(yǔ)文成績(jī)高于70分的學(xué)生的序號(hào)班級(jí)年齡語(yǔ)句如下:SELECT序號(hào),班級(jí),年齡FROMTable_5where序號(hào)in(select序號(hào)fromTable_4where語(yǔ)文>70)SQLSQL補(bǔ)充學(xué)習(xí)(十):ANY運(yùn)算符和ALL運(yùn)算符的子查詢執(zhí)行結(jié)果:SQL補(bǔ)充學(xué)習(xí)(九):使用EXISTS語(yǔ)句的子查詢使用EXISTS語(yǔ)句的子查詢EXISTS語(yǔ)句用來(lái)測(cè)試集合是否為空,在子查詢中返回true和false。通常情況下,EXISTS語(yǔ)句與子查詢結(jié)合使用,并且只要子查詢至少返回一個(gè)值,則EXISTS語(yǔ)句的值為true。9.1使用EXISTS語(yǔ)句的子查詢樣例莎HA1JFAN切收丸..吐mT命"5…一砒■工話?4丫-WAHFOGDATA...dbo.Table2序號(hào)姓名語(yǔ)文數(shù)字,地理庾棗■5蟲(chóng)蟲(chóng)6775他f596名名757755斗虹紅罰斗4的47834558775Mi...dLo.Iable5WAHFAJTGLkTA...dbo.Table.序曇班級(jí)?年齡115E453454565676157560酬6ML/imML查詢?cè)赥able_4中有成績(jī)的學(xué)生信息select序號(hào),班級(jí),年齡fromTable_5asawhereexists(select*fromTable_4where序號(hào)=a.序號(hào))執(zhí)行結(jié)果:序號(hào)班級(jí)5625E586固結(jié)果|自執(zhí)行結(jié)果:序號(hào)班級(jí)5625E586固結(jié)果|自消息|EXISTS表達(dá)式前面還可以加上NOT運(yùn)算符,表示不存在某個(gè)子查詢條件中。比如上面的代碼前加notselect序號(hào),班級(jí),年齡fromTable_5asawherenotexists(select*fromTable_4where序號(hào)=a.序號(hào))執(zhí)行結(jié)果:同皓果]E備消息序號(hào)班級(jí)|年齡1545■34疔斗75610.ANY運(yùn)算符的子查詢和ALL運(yùn)算符的子查詢?cè)谧硬樵冎薪?jīng)過(guò)會(huì)用到any運(yùn)算符,表示跟子查詢中的每一個(gè)值進(jìn)行比較。在比較過(guò)程中,如果有一個(gè)值為真,則整個(gè)子查詢結(jié)果集的比較值就為真。all運(yùn)算符與any不同在于,它需要所有比較結(jié)果都為真,整個(gè)子查詢結(jié)果集才為真。10.1ANY運(yùn)算符的子查詢實(shí)例要求:從表中查詢除了語(yǔ)文成績(jī)最低的人以為的所有人的各科成績(jī)。select*fromTable_4where語(yǔ)文>any(select語(yǔ)文fromTable_4)執(zhí)行結(jié)果:討結(jié)果鞘息序號(hào)「姓名]語(yǔ)「數(shù)…地建歷史[[5|蟲(chóng)蟲(chóng)6名名8土小G775NULL757143斜更0759.55?510.2比較運(yùn)算符與any連用時(shí)的取值比較運(yùn)算符+any所取子查詢的結(jié)果“〉、>二、!〈”+“any”取最小值“二”+“any”取所有值,相當(dāng)于in“?”+“any”相當(dāng)于notin“<、<=、?。尽?“any”最大值SQLSQL補(bǔ)充學(xué)習(xí)(十一):Having語(yǔ)句的子查詢SQLSQL補(bǔ)充學(xué)習(xí)(十一):Having語(yǔ)句的子查詢因?yàn)閍ny表示認(rèn)識(shí)一個(gè)的意思,比如大于,大于任何一個(gè)值即可,所以只要大于最小值就可以了。10.3ALL運(yùn)算符的子查詢實(shí)例樣例數(shù)據(jù):要求:查出分?jǐn)?shù)scroe大于所有BEIJING地區(qū)學(xué)生score的學(xué)生信息語(yǔ)句:SELECT*FROM[mydata].[dbo].[Table_1]wherescore>all(selectscorefromTable_1whereaddress='BEIJING')執(zhí)行結(jié)果:I的消息泊namej:^Ehooladdressscoredata1I+蟲(chóng)蟲(chóng)耳月天NULL90'^006-04-0300:00:00.000SQLSQL補(bǔ)充學(xué)習(xí)(十二):嵌套子查詢SQLSQL補(bǔ)充學(xué)習(xí)(十二):嵌套子查詢10.Having語(yǔ)句的子查詢having只能與select語(yǔ)句一起使用,通常在groupby子句中使用,否則跟where子句一樣。Having語(yǔ)句的子查詢樣例數(shù)據(jù)/fkBTASGDATJL...dbo.TabledWMTFAlTG-DATk...里號(hào)!姓名購(gòu)物花即1LIming34,00002wanqzi'54.00003LIming4^.00004Liaodong69.00005-壬子50,0000卜■650.0000采71W4M2AW要求:查詢出表中每個(gè)人的購(gòu)物總花費(fèi),并輸出大于人平均花費(fèi)的人的信息SELECT姓名,sum(購(gòu)物花費(fèi))as消費(fèi)總額fromTable_3groupby姓名havingsum(購(gòu)物花費(fèi))>(selectAVG(購(gòu)物花費(fèi))fromTable_3)執(zhí)行結(jié)果:囿結(jié)果|陰消息姓名消費(fèi)總額'129.0^76'84.983269.333412.嵌套子查詢子查詢也可以出現(xiàn)在其他子查詢語(yǔ)句中,通常將位于其他子查詢的子查詢稱為嵌套子查詢。12.1嵌套子查詢實(shí)例樣例數(shù)據(jù):語(yǔ)句如下:SELECT序號(hào),班級(jí),年齡fromTable_5where序號(hào)in(select序號(hào)fromTable_4where數(shù)學(xué)>(selectAVG(數(shù)學(xué))fromTable_4))執(zhí)行結(jié)果:要求:Table_5中的查詢出序號(hào)、班級(jí)、年齡以及Table_4中的語(yǔ)文的平均成績(jī),并要求學(xué)口結(jié)果島消息1序號(hào)班級(jí)年舲角iE71;615生的語(yǔ)文成績(jī)要低于平均語(yǔ)文成績(jī)。selectdistincta.序號(hào),a.班級(jí),a.年齡,(selectAVG(語(yǔ)文)fromTable_4)as語(yǔ)文平均成績(jī)fromTable_4asb,Table_5asawherea.序號(hào)in(select序號(hào)fromTable_4where語(yǔ)文>(selectAVG(語(yǔ)文)fromTable_4))執(zhí)行結(jié)果:a結(jié)果|由消息序號(hào)旺"年…丁語(yǔ)文平均成続G74S2、?卡1549SQL補(bǔ)充學(xué)習(xí)(十三):CASE語(yǔ)句交叉表查詢CASE13.交叉表查詢使用交叉表查詢不僅使數(shù)據(jù)容易管理,而且能生成一種方便閱讀的表格數(shù)據(jù)。CASE語(yǔ)句CASE語(yǔ)句可以返回多個(gè)結(jié)果的表達(dá)式,將某個(gè)表達(dá)式與一組簡(jiǎn)單表達(dá)式進(jìn)行比較,從而得到所需結(jié)果。13.1.1CASE語(yǔ)句語(yǔ)法Caseinput_expressionWHENwhen_expressionTHENresult_expression[…n][ELSEelse_expression]END13.1.2CASE語(yǔ)句實(shí)例樣例數(shù)據(jù):要求:查詢出時(shí)間中三個(gè)時(shí)間段,每個(gè)人的總消費(fèi)金額。語(yǔ)句:SELECT時(shí)間,sum(case姓名when'LIming'Then購(gòu)物花費(fèi)elsenullend)as'LIming',sum(case姓名when'wangzi'Then購(gòu)物花費(fèi)elsenullend)as'wangzi',sum(case姓名when'xiaodong'Then購(gòu)物花費(fèi)elsenullend)as'xiaodong'FROM[mydata].[dbo].[Table_3]groupby時(shí)間執(zhí)行結(jié)果:1結(jié)黑-J消息時(shí)問(wèn)|LImirigwangzi扁odorig12011-03;2300:00:00.00050.4433NULLNULL?2011-04-03W;00;OC,000J4.6SS&34.4463.3.3343.2011-04-3030:00:00.00043;987750.543^::NULL要求:查詢出三個(gè)人在每個(gè)時(shí)間段的消費(fèi)金額SELECT姓名,sum(case時(shí)間when'2011-03-2300:00:00.000'Then購(gòu)物花費(fèi)elsenullend)as'2011-03-2300:00:00.000',sum(case時(shí)間when'2011-04-0300:00:00.000'Then購(gòu)物花費(fèi)elsenullend)as'2011-04-0300:00:00.000',sum(case時(shí)間when'2011-04-3000:00:00.000'Then購(gòu)物花費(fèi)elsenullend)as'2011-04-3000:00:00.000'FROM[mydata].[dbo].[Table_3]groupby姓名執(zhí)行結(jié)果:園結(jié)弟弗消息姓名2011-03-Z300:00:00.0002011-04-0300:0000.0002011-04-3000:00:00.0001LIming50.4433f,:'Ja4.66GG'43.937?士wangziNULL34.4450.5433','wiaodongNULL69.3334NULLSQL補(bǔ)充學(xué)習(xí)(十五):select和selectinto語(yǔ)句插入數(shù)據(jù)15.select和selectinto語(yǔ)句插入數(shù)據(jù)15.1select語(yǔ)句插入數(shù)據(jù)用insertintoselect語(yǔ)句插入數(shù)據(jù)的一個(gè)重要用途就是備份表。15.1.1select語(yǔ)句插入數(shù)據(jù)語(yǔ)法insertinto表名1select列名from表名2where條件15.1.2select語(yǔ)句插入數(shù)據(jù)實(shí)例帀邯凰切垃丸..心o.TabljF丿曾ABTAJGIllJjrT一起。一工話.4”WAHFAUGDATA...dbo.Tal.le2序號(hào)姓名語(yǔ)文數(shù)學(xué)地理歷史■5蟲(chóng)蟲(chóng)6775596名名757755斗虹紅益吟447834558775卜楽AU2MJLLMLA/ULLAU2MJLL要求:創(chuàng)建新表,將上面數(shù)據(jù)中語(yǔ)文大于60分的人的成績(jī)備份。語(yǔ)句:createtable表4備份表(序號(hào)int,姓名varchar(20)null,語(yǔ)文intnull,數(shù)學(xué)intnull,地理intnull,歷史intnull)goinsertinto表4備份表select*fromTable_4where語(yǔ)文>60select*from表4備份表執(zhí)行結(jié)果:o語(yǔ)句插入數(shù)據(jù)o也可向表中插入數(shù)據(jù)。o語(yǔ)法select列名,列名,.into表名2from表名1where條件語(yǔ)句o實(shí)例樣例數(shù)據(jù):要求:將序號(hào)1-5的人成績(jī)備份到新表1-5中select序號(hào),姓名,語(yǔ)文,數(shù)學(xué),地理,歷史into前5fromTable_4where序號(hào)between1and5select*from前5執(zhí)行結(jié)果:結(jié)果1□消息序號(hào)姓名語(yǔ)…數(shù)…|地理歷史茫[蟲(chóng)玄6775NULL5924紅紅;23448347注:每次最后的select*只是為了查看操作的效果。SQL補(bǔ)充學(xué)習(xí)(十六):使用子查詢插入數(shù)據(jù)信息16使用子查詢插入數(shù)據(jù)信息使用子查詢插入數(shù)據(jù)信息實(shí)際上是insertinto…se語(yǔ)句,并將子查詢放置在查詢條件中。16使用子查詢插入數(shù)據(jù)信息實(shí)例樣例數(shù)據(jù):..dbc.Table$-/lASTkH^BATA...dLo.TaBle<WJJJFOGDATA...dbo.Table2姓名語(yǔ)文數(shù)學(xué)地理歷史■5蟲(chóng)蟲(chóng)6775W/59名名75774355斗虹紅2344894734556775/1MZML磁fW/A/m
dinTable5dinTable5WWA2TGDHA...dbo.Table.班級(jí)年熬115斗53.4S'4565676157568蕉6眥£/im要求:將在表4中有成績(jī)的同學(xué)的序號(hào)、班級(jí)和年齡備份到新表中。createtable備份表3(序號(hào)int,班級(jí)intnull,年齡intnull)insertinto備份表3select序號(hào),班級(jí),年齡fromTable_5asTwhereEXISTS(select序號(hào)fromTable_4where序號(hào)=T.序號(hào))orderby序號(hào)select*from備份表3執(zhí)行結(jié)果:詰果■i|J消息I班級(jí)[年魏—i°|5'62、67TjE154836SQL補(bǔ)充學(xué)習(xí)(十七):使用SQL刪除數(shù)據(jù)17使用SQL刪除數(shù)據(jù)
樣例數(shù)據(jù):z^ABFAH&DATA...lbo.Table5?-MFAJItJDkTA...dbo-Tstl.—班級(jí)1年嚴(yán)?115乞4呂3斗54E65f7&1575:&&365461051155/IU£Am/bUZ帀硼翹DAT丸..心o.TabljF/tAWAJGnibh…Mb。--WAHFA1TGDATA...dbo.Table2序號(hào)姓名語(yǔ)文數(shù)字地理匝史5蟲(chóng)蟲(chóng)6775596名名J57755斗虹紅44的47e小爪558775Ml..VLU4WMlMJL117.1刪除指定條件的單行數(shù)據(jù)要求:刪除Table_5中序號(hào)為11的記錄行deletefromTable_5where序號(hào)=11select*fromTable_5執(zhí)行結(jié)果:回皓果島消1.11序號(hào)班一.|:年鹼hT52'…二453’_4544-5&5561e157568E2G'9a-4〕Q5.5刪除指定條件的多行記錄要求:在上述基礎(chǔ)上,刪除Table_5中序號(hào)在8-10之間的記錄deletefromTable_5where序號(hào)between8and10select*fromTable_5執(zhí)行結(jié)果:■E1結(jié)果][序號(hào)班..!年齡1!15224.5345445G5561G615115617.3刪除所有記錄刪除前面?zhèn)浞莸那?語(yǔ)句如下:deletefrom前5select*from前5執(zhí)行結(jié)果:17.4使用TRUNCATETABLE語(yǔ)句刪除數(shù)據(jù)truncatetable語(yǔ)句用于刪除表中所有數(shù)據(jù),它比用delete省略where刪除所有數(shù)據(jù)要快得多。區(qū)別在于:delete是一次一行刪除,在事務(wù)處理日志中記錄相關(guān)刪除操作及刪除行中的列值,這樣在刪除失敗時(shí)可以用事務(wù)處理日志回復(fù)數(shù)據(jù)。但truncatetalbe則一次性刪除所有數(shù)據(jù),事務(wù)處理日志不能回復(fù)。17.5子查詢刪除數(shù)據(jù)信息刪除Table_4中數(shù)學(xué)成績(jī)小于平均分的人的信息語(yǔ)句:deletefromTable_4where數(shù)學(xué)v(selectAVG(數(shù)學(xué))fromTable_4)select*fromTable_413?結(jié)果|蟲(chóng)消息.|序號(hào)姓名’語(yǔ)…數(shù)…地理j蟲(chóng)蟲(chóng)67'75NULL592_6名名75774355SQL補(bǔ)充學(xué)習(xí)(十七):使用SQL修改數(shù)據(jù)17.使用SQL修改數(shù)據(jù)17.1使用SQL修改數(shù)據(jù)語(yǔ)法update表名set列名1,列名2=值,…where條件樣例數(shù)據(jù):
■帀X1JFAN亦收丸..吐o.Tab:LeEXAaFAJCHJbh…一曲。一WAHFOGDATA...dbo.Tabled序號(hào)姓名語(yǔ)文轡地理歷史■5蟲(chóng)蟲(chóng)6775/bi血596名名.75774355斗虹紅斗4逋478嶺4558775卜崇MlMl修改制定條件的單行數(shù)據(jù)要求:將Table_5中序號(hào)為5的學(xué)生的班級(jí)更改為1語(yǔ)句:updateTable_5set班級(jí)=1where序號(hào)=5select*fromeTable_5執(zhí)行結(jié)果:
圉結(jié)果於消息|序號(hào)班…年齡i1'l"5453斗牙456517;6'6157755改制定條件的多行數(shù)據(jù)將上表中年齡<6的人的年齡編到1班去updateTable_5set班級(jí)=1where年齡<6select*fromTable_5執(zhí)行結(jié)果:園鰭果|墻消息|序號(hào)班級(jí)年齡123h11213T54.4.561J51—7b6.15775■617.4使用子查詢修改數(shù)據(jù)記錄蟲(chóng)蟲(chóng)的語(yǔ)文成績(jī)加上語(yǔ)文成績(jī)*0.2語(yǔ)句:updateTable_4set語(yǔ)文=語(yǔ)文+語(yǔ)文*0.2where語(yǔ)文v(selectAVG(語(yǔ)文)fromTable_4)select*fromTable_4執(zhí)行結(jié)果:|二結(jié)果]匕消息|j?j,,j'—rr:—」,,—~r序?qū)彰Z(yǔ)…數(shù)…地理陽(yáng)史|"s"""""蟲(chóng)蟲(chóng)8075NULL59G名名Z5??4355a4紅紅2了448372.404055S77517.5修改所有數(shù)據(jù)updata表名set列名=值,…要求:將表5中的年齡全部設(shè)置為8歲語(yǔ)句:updateTable_5set年齡=8select*fromTable_5SQL補(bǔ)充學(xué)習(xí)(十八):SQLserver中的事務(wù)18.SQLserver中的事務(wù)事務(wù)是指一系列語(yǔ)句組成的邏輯工作單元,其中可以包括許多操作,但是它們?cè)谶壿嬌鲜莻€(gè)整體,要么全部完成,要么全部失敗。關(guān)鍵詞說(shuō)明:begintran開(kāi)始事務(wù)committran提交事務(wù)starttransaction執(zhí)行開(kāi)始事務(wù)setconstrains在當(dāng)前事務(wù)中設(shè)置約束settransaction設(shè)置下一個(gè)要執(zhí)行的事務(wù)屬性savepoint在事務(wù)中設(shè)置保存點(diǎn),可以理解為斷點(diǎn),用來(lái)標(biāo)識(shí)重新開(kāi)始事務(wù)的位置。releasesavepoint釋放保存點(diǎn)rollback標(biāo)識(shí)中止事務(wù)18.1SQLserver中的事務(wù)語(yǔ)法begintran事務(wù)名稱SQL語(yǔ)句操作committran事務(wù)名稱使用事務(wù)修改數(shù)據(jù)信息樣例數(shù)據(jù):$消息|序號(hào)姓名語(yǔ)…數(shù)…地理I碇Ti580'75NULL5926名名擊77435524紅紅448572840558775要求:使用事務(wù)將語(yǔ)文成績(jī)小于30分的人語(yǔ)文成績(jī)給30分begintranupdate_scoreupdateTable_4set語(yǔ)文=30where語(yǔ)文<30committranupdate_scoreselect*fromTa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 托管保管合同范本
- 生產(chǎn)經(jīng)理合同協(xié)議
- 借名貸款協(xié)議書(shū)
- 空運(yùn)代理合同范本
- 建材入職合同范本
- 房屋委托持協(xié)議書(shū)
- 全國(guó)注冊(cè)協(xié)議書(shū)
- 信用證合同范本
- 電器合同范本模板
- 入館安全協(xié)議書(shū)
- 小學(xué)生一、二、三年級(jí)家庭獎(jiǎng)罰制度表
- 中石化華北分公司鉆井定額使用說(shuō)明
- 礦山壓力與巖層控制智慧樹(shù)知到答案章節(jié)測(cè)試2023年湖南科技大學(xué)
- 機(jī)加工車間主任年終總結(jié)3篇
- WB/T 1119-2022數(shù)字化倉(cāng)庫(kù)評(píng)估規(guī)范
- GB/T 5125-1985有色金屬?zèng)_杯試驗(yàn)方法
- GB/T 4937.3-2012半導(dǎo)體器件機(jī)械和氣候試驗(yàn)方法第3部分:外部目檢
- GB/T 23445-2009聚合物水泥防水涂料
- 我國(guó)尾管懸掛器研制(for cnpc)
- 第3章樁基工程課件
- 美國(guó)COMPASS電磁導(dǎo)航產(chǎn)品介紹課件
評(píng)論
0/150
提交評(píng)論