




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章Transact-SQL語(yǔ)言學(xué)習(xí)目標(biāo)本章重點(diǎn)本章內(nèi)容7/26/20231學(xué)習(xí)目標(biāo)Transact-SQL語(yǔ)言是微軟公司在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MicrosoftSQLServer中的ISOSQL的實(shí)現(xiàn)。SQL(structurequerylanguage,結(jié)構(gòu)化查詢語(yǔ)言)語(yǔ)言是國(guó)際標(biāo)準(zhǔn)化組織(internationalstandardizeorganization,ISO)采納的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言。通過(guò)使用Transact-SQL語(yǔ)言,用戶幾乎可以完成MicrosoftSQLServer數(shù)據(jù)庫(kù)中的所有操作。本章將全面來(lái)研究Transact-SQL語(yǔ)言的特點(diǎn)和使用方式。7/26/20232本章重點(diǎn)特點(diǎn)和類型執(zhí)行方式數(shù)據(jù)定義語(yǔ)言數(shù)據(jù)操縱語(yǔ)言數(shù)據(jù)控制語(yǔ)言事務(wù)管理語(yǔ)言附加語(yǔ)言元素7/26/20233本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/20234本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/202353.1Transact-SQL語(yǔ)言的特點(diǎn)1970年6月,埃德加?考特(EdgarFrankCodd)在CommunicationsofACM上發(fā)表了《大型共享數(shù)據(jù)庫(kù)數(shù)據(jù)的關(guān)系模型》一文。首次明確而清晰地為數(shù)據(jù)庫(kù)系統(tǒng)提出了一種嶄新的模型,即關(guān)系模型。1970年以后,考特繼續(xù)致力于完善與發(fā)展關(guān)系理論。1972年,他提出了關(guān)系代數(shù)和關(guān)系演算的概念,定義了關(guān)系的并、交、投影、選擇、連接等各種基本運(yùn)算,為SQL語(yǔ)言的形成和發(fā)展奠定了理論基礎(chǔ)。1979年,SQL在商業(yè)數(shù)據(jù)庫(kù)中成功得到了應(yīng)用。7/26/20236SQL標(biāo)準(zhǔn)1986年,美國(guó)國(guó)家標(biāo)準(zhǔn)化組織正式發(fā)表了編號(hào)為X3.135-1986的SQL標(biāo)準(zhǔn),并且在1987年獲得了ISO組織的認(rèn)可,被命名為ISO9075-1987。后來(lái)這個(gè)標(biāo)準(zhǔn)在1992、2019、2019、2019年等不斷地得到了擴(kuò)充和完善。從SQL語(yǔ)言的歷史來(lái)看,Transact-SQL語(yǔ)言與SQL語(yǔ)言并不完全等同。不同的數(shù)據(jù)庫(kù)供應(yīng)商一方面采納了SQL語(yǔ)言作為自己數(shù)據(jù)庫(kù)的操作語(yǔ)言,另一方面又對(duì)SQL語(yǔ)言進(jìn)行了不同程度的擴(kuò)展。這種擴(kuò)展的主要原因是不同的數(shù)據(jù)庫(kù)供應(yīng)商為了達(dá)到特殊目的和實(shí)現(xiàn)新的功能,不得不對(duì)標(biāo)準(zhǔn)的SQL語(yǔ)言進(jìn)行擴(kuò)展,而這些擴(kuò)展往往又是SQL標(biāo)準(zhǔn)的下一個(gè)版本的主要實(shí)踐來(lái)源。7/26/20237特點(diǎn)Transact-SQL語(yǔ)言有4個(gè)特點(diǎn):一是一體化的特點(diǎn),集數(shù)據(jù)定義語(yǔ)言、數(shù)據(jù)操縱語(yǔ)言、數(shù)據(jù)控制語(yǔ)言、事務(wù)管理語(yǔ)言和附加語(yǔ)言元素為一體。二是有兩種使用方式,即交互使用方式和嵌入到高級(jí)語(yǔ)言中的使用方式。三是非過(guò)程化語(yǔ)言,只需要提出“干什么”,不需要指出“如何干”,語(yǔ)句的操作過(guò)程由系統(tǒng)自動(dòng)完成。四是,類似于人的思維習(xí)慣,容易理解和掌握。7/26/20238類型在MicrosoftSQLServer2019系統(tǒng)中,根據(jù)Transact-SQL語(yǔ)言的功能特點(diǎn),可以把Transact-SQL語(yǔ)言分為5種類型,即數(shù)據(jù)定義語(yǔ)言數(shù)據(jù)操縱語(yǔ)言數(shù)據(jù)控制語(yǔ)言事務(wù)管理語(yǔ)言附加的語(yǔ)言元素7/26/20239本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023103.2Transact-SQL語(yǔ)言的執(zhí)行方式在MicrosoftSQLServer2019系統(tǒng)中,主要使用SQLServerManagementStudio工具來(lái)執(zhí)行Transact-SQL語(yǔ)言編寫的查詢語(yǔ)句。除此之外,還可以使用sqlcmd實(shí)用工具來(lái)執(zhí)行Transact-SQL語(yǔ)句。因?yàn)榍懊嬉呀?jīng)講過(guò)如何使用sqlcmd工具執(zhí)行Transact-SQL語(yǔ)句了,下面主要介紹SQLServerManagementStudio工具的特點(diǎn)。7/26/202311執(zhí)行Transact-SQL語(yǔ)句示例7/26/202312【SQL編輯器】的工具欄7/26/202313本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023143.3數(shù)據(jù)定義語(yǔ)言數(shù)據(jù)定義語(yǔ)言用于創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象,為數(shù)據(jù)庫(kù)操作提供對(duì)象。例如,數(shù)據(jù)庫(kù)以及表、觸發(fā)器、存儲(chǔ)過(guò)程、視圖、索引、函數(shù)、類型、用戶等都是數(shù)據(jù)庫(kù)中的對(duì)象,都需要通過(guò)定義才能使用。在DDL中,主要的Transact-SQL語(yǔ)句包括CREATE語(yǔ)句、ALTER語(yǔ)句、DROP語(yǔ)句。7/26/202315CREATE語(yǔ)句CREATE語(yǔ)句用于創(chuàng)建數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)中的對(duì)象,是一個(gè)從無(wú)到有的過(guò)程。也就是說(shuō),CREATE語(yǔ)句用于創(chuàng)建將要在今后使用數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)對(duì)象。【例3-1】使用CREATE語(yǔ)句創(chuàng)建一個(gè)ContactDetail表。7/26/202316ALTER語(yǔ)句ALTER語(yǔ)句用于更改數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)對(duì)象的結(jié)構(gòu)。也就是說(shuō),ALTER語(yǔ)句的對(duì)象必須已經(jīng)存在。ALTER語(yǔ)句僅僅是更改其對(duì)象的結(jié)構(gòu),其對(duì)象中已有的數(shù)據(jù)不受任何影響。對(duì)于表對(duì)象來(lái)說(shuō),使用ALTER語(yǔ)句在表中增加一個(gè)新列、刪除一個(gè)列等操作都屬于對(duì)表結(jié)構(gòu)的更改。【例3-2】使用ALTER語(yǔ)句在ContactDetail表中增加一個(gè)productName列。7/26/202317DROP語(yǔ)句刪除數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)對(duì)象的結(jié)構(gòu)可以通過(guò)使用DROP語(yǔ)句來(lái)完成。需要注意的是,刪除對(duì)象結(jié)構(gòu)包括刪除該對(duì)象中的所有內(nèi)容和對(duì)象本身。例如,如果刪除ContactDetail表,那么不僅僅ContactDetail表結(jié)構(gòu)不再存在了,該表中的所有數(shù)據(jù)也都自然不存在了。【例3-3】使用DROP語(yǔ)句刪除ContactDetail表。7/26/202318本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023193.4數(shù)據(jù)操縱語(yǔ)言數(shù)據(jù)操縱語(yǔ)言主要是用于操縱表、視圖中數(shù)據(jù)的語(yǔ)句。當(dāng)我們創(chuàng)建表對(duì)象之后,初始狀態(tài)時(shí)該表是空的,沒(méi)有任何數(shù)據(jù)。如何向表中添加數(shù)據(jù)呢?這時(shí)需要使用INSERT語(yǔ)句。如何檢索表中數(shù)據(jù)呢?可以使用SELECT語(yǔ)句。如果表中數(shù)據(jù)不正確的,那么可以使用UPDATE語(yǔ)句進(jìn)行更新。當(dāng)然,也可以使用DELETE語(yǔ)句刪除表中的數(shù)據(jù)。實(shí)際上,DML語(yǔ)言正是包括了INSERT、SELECT、UPDATE及DELETE等語(yǔ)句。7/26/202320INSERT語(yǔ)句INSERT語(yǔ)句用于向已經(jīng)存在的表中插入新的數(shù)據(jù),一次插入一行數(shù)據(jù)。當(dāng)需要向表中插入多行數(shù)據(jù)時(shí),需要多次使用INSERT語(yǔ)句?!纠?-4】使用INSERT語(yǔ)句向ContactDetail表中插入數(shù)據(jù)。7/26/202321UPDATE語(yǔ)句如果表中的數(shù)據(jù)不正確或不合適或者已經(jīng)變化,那么可以使用UPDATE語(yǔ)句更新這些不恰當(dāng)?shù)臄?shù)據(jù)?!纠?-5】使用UPDATE語(yǔ)句將ContactDetail表中330號(hào)產(chǎn)品的銷售數(shù)量由2500臺(tái)更新為3000臺(tái),單價(jià)由1000元更改為990元。7/26/202322DELETE語(yǔ)句使用DELETE語(yǔ)句可以刪除表中的數(shù)據(jù)。一般地,如果在DELETE語(yǔ)句中沒(méi)有刪除條件,那么將刪除表中的所有數(shù)據(jù)。需要注意的是,DELETE語(yǔ)句與DROP語(yǔ)句不同。DELETE語(yǔ)句刪除表中的數(shù)據(jù),但是該表對(duì)象依然存在。DROP語(yǔ)句則刪除了表對(duì)象,表中的數(shù)據(jù)自然也不存在了。【例3-6】使用DELETE語(yǔ)句刪除ContactDetail表中351號(hào)產(chǎn)品的信息。7/26/202323本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023243.5數(shù)據(jù)控制語(yǔ)言數(shù)據(jù)控制語(yǔ)言(DCL)主要用來(lái)執(zhí)行有關(guān)安全管理的操作,該語(yǔ)言主要包括GRANT語(yǔ)句、REVOKE語(yǔ)句和DENY語(yǔ)句。GRANT語(yǔ)句可以將指定的安全對(duì)象的權(quán)限授予相應(yīng)的主體,REVOKE語(yǔ)句則刪除授予的權(quán)限,DENY語(yǔ)句拒絕授予主體權(quán)限,并且防止主體通過(guò)組或角色成員繼承權(quán)限。下面,通過(guò)一個(gè)簡(jiǎn)單示例講述DCL語(yǔ)言的特點(diǎn)。7/26/202325【例3-7】演示DCL語(yǔ)言【例3-7】演示DCL語(yǔ)言的特點(diǎn)。假設(shè)Cleon是ElecTravelCom數(shù)據(jù)庫(kù)中的一個(gè)用戶,GManager是該數(shù)據(jù)庫(kù)中的一個(gè)角色,且Cleon用戶是GManager角色的一個(gè)成員。7/26/202326本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023273.6事務(wù)管理語(yǔ)言在MicrosoftSQLServer系統(tǒng)中,可以使用BEGINTRANSACTION、COMMITTRANSACTION及ROLLBACKTRANSACTION等事務(wù)管理語(yǔ)言(TML)語(yǔ)句來(lái)管理顯式事務(wù)。其中,BEGINTRANSACTION語(yǔ)句用于明確地定義事務(wù)的開始,COMMITTRANSACTION語(yǔ)句用于明確地提交完成的事務(wù)。如果事務(wù)中出現(xiàn)了錯(cuò)誤,那么可以使用ROLLBACKTRANSACTION語(yǔ)句明確地取消定義的事務(wù)。7/26/202328【例3-8】演示TML語(yǔ)言【例3-8】演示如何使用TML語(yǔ)言。為了確保賬戶之間的轉(zhuǎn)賬過(guò)程準(zhǔn)確無(wú)誤,需要通過(guò)定義明確的事務(wù)來(lái)完成這種操作。7/26/202329創(chuàng)建accounting表7/26/202330向accounting表中插入數(shù)據(jù)7/26/202331accounting表中當(dāng)前信息7/26/202332轉(zhuǎn)賬事務(wù)語(yǔ)言示例7/26/202333accounting表中轉(zhuǎn)賬后的信息7/26/202334本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023353.7附加的語(yǔ)言元素除了前面介紹的語(yǔ)句之外,Transact-SQL語(yǔ)言還包括了附加的語(yǔ)言元素。這些附加的語(yǔ)言元素主要包括標(biāo)識(shí)符、變量和常量、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、函數(shù)、控制流語(yǔ)言、錯(cuò)誤處理語(yǔ)言及注釋等。下面,詳細(xì)研究這些內(nèi)容。7/26/202336標(biāo)識(shí)符在Transact-SQL語(yǔ)言中,數(shù)據(jù)庫(kù)對(duì)象的名稱就是其標(biāo)識(shí)符。在MicrosoftSQLServer系統(tǒng)中,所有的數(shù)據(jù)庫(kù)對(duì)象都可以有標(biāo)識(shí)符,例如服務(wù)器、數(shù)據(jù)庫(kù)、表、視圖、索引、觸發(fā)器、約束等。大多數(shù)對(duì)象的標(biāo)識(shí)符是必須的,例如創(chuàng)建表時(shí)必須為表指定標(biāo)識(shí)符。但是,也有一些對(duì)象的標(biāo)識(shí)符是可選的,例如創(chuàng)建約束時(shí)用戶可以不提供標(biāo)識(shí)符,其標(biāo)識(shí)符由系統(tǒng)自動(dòng)生成。7/26/202337標(biāo)識(shí)符的類型按照標(biāo)識(shí)符的使用方式,可以把這些標(biāo)識(shí)符分為常規(guī)標(biāo)識(shí)符和分割標(biāo)識(shí)符兩種類型。在Transact-SQL語(yǔ)句中使用時(shí)不用將其分割的標(biāo)識(shí)符稱為常規(guī)標(biāo)識(shí)符。7/26/202338標(biāo)識(shí)符的規(guī)則規(guī)則一,第一個(gè)字符必須是下列字符之一:Unicode標(biāo)準(zhǔn)定義的字母或下劃線(_)、符號(hào)()或數(shù)字符號(hào)(#)。規(guī)則二,后續(xù)字符可以包括:Unicode標(biāo)準(zhǔn)中定義的字母?;纠∽址蚴M(jìn)制數(shù)字。下劃線(_)、符號(hào)()、數(shù)字符號(hào)(#)或美元符號(hào)($)。規(guī)則三,標(biāo)識(shí)符不能是Transact-SQL語(yǔ)言的保留字,包括大寫和小寫形式。規(guī)則四,不允許嵌入空格或其他特殊字符。7/26/202339使用分割標(biāo)識(shí)符有兩種情況下使用分割標(biāo)識(shí)符:一是對(duì)象名稱中包含了MicrosoftSQLServer保留字時(shí)需要使用分割標(biāo)識(shí)符,例如[where]分割標(biāo)識(shí)符;二是對(duì)象名稱中使用了未列入限定字符的字符,例如[product[1]table]分割標(biāo)識(shí)符。使用雙引號(hào)分割的標(biāo)識(shí)符稱為引用標(biāo)識(shí)符,使用方括號(hào)分割的標(biāo)識(shí)符稱為括號(hào)標(biāo)識(shí)符。默認(rèn)情況下,只能使用括號(hào)標(biāo)識(shí)符。當(dāng)QUOTED_IDENTIFIER選項(xiàng)設(shè)置為ON時(shí),才能使用引用的標(biāo)識(shí)符。7/26/202340【例3-9】【例3-9】演示QUOTED_IDENTIFIER選項(xiàng)的作用和特點(diǎn)。7/26/202341QUOTED_IDENTIFIER選項(xiàng)值為OFF7/26/202342QUOTED_IDENTIFIER選項(xiàng)值為ON7/26/202343變量和常量在MicrosoftSQLServer2019系統(tǒng)中,變量也被稱為局部變量,是可以保存單個(gè)特定類型數(shù)據(jù)值的對(duì)象。一般地,經(jīng)常在批處理和腳本中使用變量,這些變量可以作為計(jì)數(shù)器計(jì)算循環(huán)執(zhí)行的次數(shù)或控制循環(huán)執(zhí)行的次數(shù);保存數(shù)據(jù)值以供控制流語(yǔ)句測(cè)試;保存存儲(chǔ)過(guò)程返回代碼要返回的數(shù)據(jù)值或函數(shù)返回值。在Transact-SQL語(yǔ)言中,可以使用DECLARE語(yǔ)句聲明變量。在聲明變量時(shí)需要注意:第一,為變量指定名稱,且名稱的第一個(gè)字符必須是;第二,指定該變量的數(shù)據(jù)類型和長(zhǎng)度;第三,默認(rèn)情況下將該變量值設(shè)置為NULL。常量是表示特定數(shù)據(jù)值的符號(hào),常量也被稱為字面量。常量的格式取決于它所表示的值的數(shù)據(jù)類型。例如,'Thisisabook.'、'August8,2019'、29157等都是常量。對(duì)于字符常量或時(shí)間日期型常量,需要使用單引號(hào)引起來(lái)。7/26/202344【例3-10】演示如何定義和使用變量。7/26/202345運(yùn)算符運(yùn)算符是一種符號(hào),用來(lái)指定要在一個(gè)或多個(gè)表達(dá)式中執(zhí)行的操作。在MicrosoftSQLServer2019系統(tǒng)中,可以使用的運(yùn)算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、字符串串聯(lián)運(yùn)算符、按位運(yùn)算符、一元運(yùn)算符及比較運(yùn)算符等。算術(shù)運(yùn)算符可以用于對(duì)兩個(gè)表達(dá)式進(jìn)行數(shù)學(xué)運(yùn)算,其類型如表3-1所示。7/26/202346【例3-11】演示如何使用算術(shù)運(yùn)算符7/26/202347【例3-12】演示如何使用邏輯運(yùn)算符7/26/202348【例3-13】演示如何使用賦值運(yùn)算符7/26/202349【例3-14】演示如何使用字符串串聯(lián)運(yùn)算符7/26/202350【例3-15】演示如何使用位運(yùn)算符7/26/202351【例3-16】演示如何使用比較運(yùn)算符7/26/202352【例3-17】演示如何使用復(fù)雜表達(dá)式7/26/202353控制流語(yǔ)言一般地,結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言的基本結(jié)構(gòu)是順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是一種自然結(jié)構(gòu),條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)都需要根據(jù)程序的執(zhí)行狀況對(duì)程序的執(zhí)行順序進(jìn)行調(diào)整。在Transact-SQL語(yǔ)言中,用于控制語(yǔ)句流的語(yǔ)言被稱為控制流語(yǔ)言。MicrosoftSQLServer2019系統(tǒng)提供了8種控制流語(yǔ)句,這些語(yǔ)句的說(shuō)明如表3-7所示。7/26/202354【例3-18】演示如何使用控制流語(yǔ)言7/26/202355錯(cuò)誤捕捉語(yǔ)言為了增強(qiáng)程序的健壯性,必須對(duì)程序中可能出現(xiàn)的錯(cuò)誤進(jìn)行及時(shí)處理。在Transact-SQL語(yǔ)言中,可以使用兩種方式處理發(fā)生的錯(cuò)誤,即使用TRY…CATCH構(gòu)造和使用ERROR函數(shù)。在Transact-SQL語(yǔ)句中,可以使用TRY…CATCH構(gòu)造來(lái)處理Transact-SQL代碼中的錯(cuò)誤。TRY…CATCH構(gòu)造由一個(gè)TRY塊和一個(gè)CATCH塊組成,如果在TRY塊中包含了Transact-SQL語(yǔ)句中檢測(cè)到的錯(cuò)誤條件,那么控制將被傳遞到CATCH塊中以便處理該錯(cuò)誤。ERROR函數(shù)可以用于捕捉上一個(gè)Transact-SQL語(yǔ)句生成的錯(cuò)誤號(hào)。7/26/202356【例3-19】演示使用TRY…CATCH7/26/202357【例3-20】演示使用ERROR函數(shù)7/26/202358注釋所有的程序設(shè)計(jì)語(yǔ)言都有注釋。注釋是程序代碼中不執(zhí)行的文本字符串,用于對(duì)代碼進(jìn)行說(shuō)明或暫時(shí)僅用正在進(jìn)行診斷的部分語(yǔ)句。一般地,注釋主要描述程序名稱、作者名稱、變量說(shuō)明、代碼更改日期、算法描述等。在MicrosoftSQLServer系統(tǒng)中支持兩種注釋方式,即雙連字符(--)注釋方式和正斜杠星號(hào)字符對(duì)(/*…*/)注釋方式。7/26/202359【例3-21】演示使用注釋7/26/202360本章內(nèi)容3.1Transact-SQL語(yǔ)言的特點(diǎn)3.2Transact-SQL語(yǔ)言的執(zhí)行方式3.3數(shù)據(jù)定義語(yǔ)言3.4數(shù)據(jù)操縱語(yǔ)言3.5數(shù)據(jù)控制語(yǔ)言3.6事務(wù)管理語(yǔ)言3.7附加的語(yǔ)言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023613.8數(shù)據(jù)類型本節(jié)將從六個(gè)方面研究Transact-SQL語(yǔ)言的數(shù)據(jù)類型。首先,分析數(shù)據(jù)類型的概念、特點(diǎn)和主要類型。然后,講述數(shù)字?jǐn)?shù)據(jù)類型的主要內(nèi)容和特點(diǎn)。之后,描述字符數(shù)據(jù)類型的使用方式。接下來(lái),研究日期和時(shí)間數(shù)據(jù)類型的輸入輸出特點(diǎn)。接著,分析二進(jìn)制數(shù)據(jù)類型的特點(diǎn)。最后,講述其他數(shù)據(jù)類型的內(nèi)容和特點(diǎn)。7/26/202362數(shù)據(jù)類型的類型和特點(diǎn)在MicrosoftSQLServer2019系統(tǒng)中,包含數(shù)據(jù)的對(duì)象都有一個(gè)數(shù)據(jù)類型。實(shí)際上,數(shù)據(jù)類型是一種用于指定對(duì)象可保存的數(shù)據(jù)的類型。例如,INT數(shù)據(jù)類型的對(duì)象只能包含整數(shù)型數(shù)據(jù),DATETIME數(shù)據(jù)類型的對(duì)象只能包含符合日期時(shí)間格式的數(shù)據(jù)。在MicrosoftSQLServer2019系統(tǒng)中,需要使用數(shù)據(jù)類型的對(duì)象包括表中的列、視圖中的列、定義的局部變量、存儲(chǔ)過(guò)程中的參數(shù)、Transact-SQL函數(shù)及存儲(chǔ)過(guò)程的返回值等。MicrosoftSQLServer2019系統(tǒng)提供了28種數(shù)據(jù)類型。這些數(shù)據(jù)類型可以分為數(shù)字?jǐn)?shù)據(jù)類型、字符數(shù)據(jù)類型、日期和時(shí)間數(shù)據(jù)類型、二進(jìn)制數(shù)據(jù)類型以及其他數(shù)據(jù)類型。7/26/202363數(shù)字?jǐn)?shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型包括BIGINT、INT、SMALLINT、TINYINT、BIT、DECIMAL、NUMERIC、MONEY、SMALLMONEY、FLOAT和REAL11種數(shù)據(jù)類型。7/26/202364字符數(shù)據(jù)類型字符數(shù)據(jù)類型包括了CHAR、VARCHAR、TEXT、NCHAR、NVARCHAR和NTEXT等6種數(shù)據(jù)類型。7/26/202365日期和時(shí)間數(shù)據(jù)類型日期和時(shí)間數(shù)據(jù)類型包括DATETIME和SMALLDATETIME兩種數(shù)據(jù)類型。7/26/202366二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型包括BINARY、VARBINARY和IMAGE3種數(shù)據(jù)類型。7/26/202367其他數(shù)據(jù)類型除此之外,還包括CURSOR、SQL_VARIANT、TABLE、TIMESTAMP、UNIQUEIDENTIFIER和XML6種數(shù)據(jù)類型。7/26/202368數(shù)字?jǐn)?shù)據(jù)類型使用數(shù)字?jǐn)?shù)據(jù)的數(shù)據(jù)類型被稱為數(shù)字?jǐn)?shù)據(jù)類型。這些數(shù)據(jù)類型的數(shù)字可以參加各種數(shù)學(xué)運(yùn)算。我們還可以為這些數(shù)據(jù)類型繼續(xù)進(jìn)行分類。從這些數(shù)字是否有小數(shù),可以把這些數(shù)據(jù)類型分為整數(shù)類型和小數(shù)類型。從這些數(shù)字的精度和位數(shù)是否可以明確地確定,可以把這些數(shù)據(jù)類型分為精確數(shù)字類型和近似數(shù)字類型。從是否可以表示金額,可以分為貨幣數(shù)字類型和非貨幣數(shù)字類型。下面,詳細(xì)研究每一種數(shù)據(jù)類型的特點(diǎn)。7/26/202369整數(shù)數(shù)據(jù)類型整數(shù)數(shù)據(jù)類型表示可以存儲(chǔ)整數(shù)精確數(shù)據(jù)。在MicrosoftSQLServer2019系統(tǒng)中,有4種整數(shù)數(shù)據(jù)類型即BIGINT、INT、SMALLINT、TINYINT??梢詮娜≈捣秶烷L(zhǎng)度兩個(gè)方面理解這些整數(shù)數(shù)據(jù)類型。7/26/202370【例3-22】演示數(shù)據(jù)溢出現(xiàn)象7/26/202371DECIMAL和NUMERIC數(shù)據(jù)類型DECIMAL和NUMERIC數(shù)據(jù)類型都是帶固定精度和位數(shù)的數(shù)據(jù)類型。這兩種數(shù)據(jù)類型在功能是等價(jià)的,只是名稱不同而已。在MicrosoftSQLServer2019系統(tǒng)中,把這兩種數(shù)據(jù)類型實(shí)際上作為完全相同的一種數(shù)據(jù)類型來(lái)對(duì)待。下面主要介紹DECIMAL數(shù)據(jù)類型的特點(diǎn)和使用方式。7/26/202372MONEY和SMALLMONEY數(shù)據(jù)類型如果希望存儲(chǔ)代表貨幣數(shù)值的數(shù)據(jù),那么可以使用MONEY和SMALLMONEY數(shù)據(jù)類型。這兩種數(shù)據(jù)類型的差別在于存儲(chǔ)字節(jié)的大小和取值范圍不同。在MicrosoftSQLServer2019系統(tǒng)中,MONEY數(shù)據(jù)類型需要耗費(fèi)8個(gè)存儲(chǔ)字節(jié),其取值范圍是-922,337,203,685,477.5808至922,337,203,685,477.5807。SMALLMONEY數(shù)據(jù)類型只需要4個(gè)存儲(chǔ)字節(jié),取值范圍是-214,748.3648至214,748.3647。7/26/202373【例3-23】演示MONEY數(shù)據(jù)類型7/26/202374FLOAT或REAL數(shù)據(jù)類型如果希望進(jìn)行科學(xué)計(jì)算,并且希望存儲(chǔ)更大的數(shù)值,但是對(duì)數(shù)據(jù)的精度要求并不是絕對(duì)的嚴(yán)格,那么應(yīng)該考慮使用FLOAT或REAL數(shù)據(jù)類型。FLOAT或REAL數(shù)據(jù)類型是用于表示數(shù)值數(shù)的大致數(shù)據(jù)值的數(shù)據(jù)類型。7/26/202375BITBIT是可以存儲(chǔ)1、0或NULL數(shù)據(jù)的數(shù)據(jù)類型。這些數(shù)據(jù)主要是用于一些條件邏輯判斷。也可以把TRUE和FALSE數(shù)據(jù)存儲(chǔ)到BIT數(shù)據(jù)類型中,這時(shí)需要按照字符格式存儲(chǔ)TRUE和FALSE數(shù)據(jù)。7/26/202376字符數(shù)據(jù)類型字符數(shù)據(jù)類型用于存儲(chǔ)固定長(zhǎng)度或可變長(zhǎng)度的字符數(shù)據(jù)。在MicrosoftSQLServer2019系統(tǒng)中,提供了CHAR、VARCHAR、TEXT、NCHAR、NVARCHAR和NTEXT6種數(shù)據(jù)類型。前3種數(shù)據(jù)類型是非Unicode字符數(shù)據(jù),后3種是Unicode字符數(shù)據(jù)。7/26/202377日期和時(shí)間數(shù)據(jù)如果希望存儲(chǔ)日期和時(shí)間數(shù)據(jù),那么可以使用DATETIME或SMALLDATETIME數(shù)據(jù)類型。這兩種數(shù)據(jù)類型的差別在于其表示的日期和時(shí)間范圍不同、時(shí)間精確度也不同。DATETIME數(shù)據(jù)類型可以表示的范圍是1753年1月1日至9999年12月31日,時(shí)間精確度是3.33毫秒。SMALLDATETIME數(shù)據(jù)類型可以表示的范圍是1900年1月1日至2079年12月31日,時(shí)間精確度是1分鐘。建議用戶在大型應(yīng)用程序中不要使用SMALLDATETIME數(shù)據(jù)類型,避免出現(xiàn)類似千年蟲的問(wèn)題。因?yàn)?079年12月31日不是一個(gè)特別遙遠(yuǎn)的日期。7/26/202378【例3-24】演示如何使用SETDATEFORMAT語(yǔ)句7/26/202379二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型包括BINARY、VARBINARY和IMAGE3種數(shù)據(jù)類型,可以用于存儲(chǔ)二進(jìn)制數(shù)據(jù)。其中,BINARY可以用于存儲(chǔ)固定長(zhǎng)度的二進(jìn)制數(shù)據(jù),VARBINARY用于存儲(chǔ)可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)。BINARY(n)和VARBINARY(n)的數(shù)據(jù)長(zhǎng)度由n值來(lái)確定,n的取值范圍是1至8000。IMAGE數(shù)據(jù)類型用于存儲(chǔ)圖像信息。但是,在MicrosoftSQLServer2019系統(tǒng)中
溫馨提示
- 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ǎng)與電力設(shè)備營(yíng)銷策略考核試卷
- 膠合板企業(yè)的財(cái)務(wù)風(fēng)險(xiǎn)管理考核試卷
- 嵌入式開發(fā)策略制定試題及答案
- 測(cè)試職責(zé)與團(tuán)隊(duì)分工試題及答案
- 定點(diǎn)刷卡藥店管理制度
- 回流庫(kù)存?zhèn)}庫(kù)管理制度
- 掌握重難點(diǎn)的公路工程考試試題及答案總結(jié)
- 軟件質(zhì)量控制生命周期的理解與實(shí)踐試題及答案
- 醫(yī)院采集設(shè)備管理制度
- 學(xué)員考核鑒定管理制度
- 浙江省寧波市鎮(zhèn)海中學(xué)2025年5月第二次模擬考試 英語(yǔ)試卷+答案
- GB/T 43449-2023法庭科學(xué)毒物分析實(shí)驗(yàn)室質(zhì)量控制規(guī)范
- [甘肅]最新甘肅省造價(jià)文件匯編(310頁(yè))
- 工業(yè)企業(yè)環(huán)境管理工作要點(diǎn)
- 臨床技術(shù)操作規(guī)范麻醉學(xué)分冊(cè)
- 夏天的衣物PPT教案
- 高中物理實(shí)驗(yàn)考點(diǎn)整合電學(xué)PPT課件
- 職業(yè)技術(shù)學(xué)院教師工作量化考核辦法
- T∕CAGHP 065.1-2019 地質(zhì)災(zāi)害防治工程概(估)算編制規(guī)范(試行)
- 《愛(ài)蓮說(shuō)》學(xué)案
- PA66增強(qiáng)增韌研究
評(píng)論
0/150
提交評(píng)論