版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章Transact-SQL語言學(xué)習(xí)目標(biāo)本章重點(diǎn)本章內(nèi)容7/26/20231學(xué)習(xí)目標(biāo)Transact-SQL語言是微軟公司在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MicrosoftSQLServer中的ISOSQL的實(shí)現(xiàn)。SQL(structurequerylanguage,結(jié)構(gòu)化查詢語言)語言是國際標(biāo)準(zhǔn)化組織(internationalstandardizeorganization,ISO)采納的標(biāo)準(zhǔn)數(shù)據(jù)庫語言。通過使用Transact-SQL語言,用戶幾乎可以完成MicrosoftSQLServer數(shù)據(jù)庫中的所有操作。本章將全面來研究Transact-SQL語言的特點(diǎn)和使用方式。7/26/20232本章重點(diǎn)特點(diǎn)和類型執(zhí)行方式數(shù)據(jù)定義語言數(shù)據(jù)操縱語言數(shù)據(jù)控制語言事務(wù)管理語言附加語言元素7/26/20233本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/20234本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/202353.1Transact-SQL語言的特點(diǎn)1970年6月,埃德加?考特(EdgarFrankCodd)在CommunicationsofACM上發(fā)表了《大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型》一文。首次明確而清晰地為數(shù)據(jù)庫系統(tǒng)提出了一種嶄新的模型,即關(guān)系模型。1970年以后,考特繼續(xù)致力于完善與發(fā)展關(guān)系理論。1972年,他提出了關(guān)系代數(shù)和關(guān)系演算的概念,定義了關(guān)系的并、交、投影、選擇、連接等各種基本運(yùn)算,為SQL語言的形成和發(fā)展奠定了理論基礎(chǔ)。1979年,SQL在商業(yè)數(shù)據(jù)庫中成功得到了應(yīng)用。7/26/20236SQL標(biāo)準(zhǔn)1986年,美國國家標(biāo)準(zhǔn)化組織正式發(fā)表了編號為X3.135-1986的SQL標(biāo)準(zhǔn),并且在1987年獲得了ISO組織的認(rèn)可,被命名為ISO9075-1987。后來這個標(biāo)準(zhǔn)在1992、2019、2019、2019年等不斷地得到了擴(kuò)充和完善。從SQL語言的歷史來看,Transact-SQL語言與SQL語言并不完全等同。不同的數(shù)據(jù)庫供應(yīng)商一方面采納了SQL語言作為自己數(shù)據(jù)庫的操作語言,另一方面又對SQL語言進(jìn)行了不同程度的擴(kuò)展。這種擴(kuò)展的主要原因是不同的數(shù)據(jù)庫供應(yīng)商為了達(dá)到特殊目的和實(shí)現(xiàn)新的功能,不得不對標(biāo)準(zhǔn)的SQL語言進(jìn)行擴(kuò)展,而這些擴(kuò)展往往又是SQL標(biāo)準(zhǔn)的下一個版本的主要實(shí)踐來源。7/26/20237特點(diǎn)Transact-SQL語言有4個特點(diǎn):一是一體化的特點(diǎn),集數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言、數(shù)據(jù)控制語言、事務(wù)管理語言和附加語言元素為一體。二是有兩種使用方式,即交互使用方式和嵌入到高級語言中的使用方式。三是非過程化語言,只需要提出“干什么”,不需要指出“如何干”,語句的操作過程由系統(tǒng)自動完成。四是,類似于人的思維習(xí)慣,容易理解和掌握。7/26/20238類型在MicrosoftSQLServer2019系統(tǒng)中,根據(jù)Transact-SQL語言的功能特點(diǎn),可以把Transact-SQL語言分為5種類型,即數(shù)據(jù)定義語言數(shù)據(jù)操縱語言數(shù)據(jù)控制語言事務(wù)管理語言附加的語言元素7/26/20239本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023103.2Transact-SQL語言的執(zhí)行方式在MicrosoftSQLServer2019系統(tǒng)中,主要使用SQLServerManagementStudio工具來執(zhí)行Transact-SQL語言編寫的查詢語句。除此之外,還可以使用sqlcmd實(shí)用工具來執(zhí)行Transact-SQL語句。因?yàn)榍懊嬉呀?jīng)講過如何使用sqlcmd工具執(zhí)行Transact-SQL語句了,下面主要介紹SQLServerManagementStudio工具的特點(diǎn)。7/26/202311執(zhí)行Transact-SQL語句示例7/26/202312【SQL編輯器】的工具欄7/26/202313本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023143.3數(shù)據(jù)定義語言數(shù)據(jù)定義語言用于創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對象,為數(shù)據(jù)庫操作提供對象。例如,數(shù)據(jù)庫以及表、觸發(fā)器、存儲過程、視圖、索引、函數(shù)、類型、用戶等都是數(shù)據(jù)庫中的對象,都需要通過定義才能使用。在DDL中,主要的Transact-SQL語句包括CREATE語句、ALTER語句、DROP語句。7/26/202315CREATE語句CREATE語句用于創(chuàng)建數(shù)據(jù)庫以及數(shù)據(jù)庫中的對象,是一個從無到有的過程。也就是說,CREATE語句用于創(chuàng)建將要在今后使用數(shù)據(jù)庫或數(shù)據(jù)庫對象?!纠?-1】使用CREATE語句創(chuàng)建一個ContactDetail表。7/26/202316ALTER語句ALTER語句用于更改數(shù)據(jù)庫以及數(shù)據(jù)庫對象的結(jié)構(gòu)。也就是說,ALTER語句的對象必須已經(jīng)存在。ALTER語句僅僅是更改其對象的結(jié)構(gòu),其對象中已有的數(shù)據(jù)不受任何影響。對于表對象來說,使用ALTER語句在表中增加一個新列、刪除一個列等操作都屬于對表結(jié)構(gòu)的更改?!纠?-2】使用ALTER語句在ContactDetail表中增加一個productName列。7/26/202317DROP語句刪除數(shù)據(jù)庫或數(shù)據(jù)庫對象的結(jié)構(gòu)可以通過使用DROP語句來完成。需要注意的是,刪除對象結(jié)構(gòu)包括刪除該對象中的所有內(nèi)容和對象本身。例如,如果刪除ContactDetail表,那么不僅僅ContactDetail表結(jié)構(gòu)不再存在了,該表中的所有數(shù)據(jù)也都自然不存在了。【例3-3】使用DROP語句刪除ContactDetail表。7/26/202318本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023193.4數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言主要是用于操縱表、視圖中數(shù)據(jù)的語句。當(dāng)我們創(chuàng)建表對象之后,初始狀態(tài)時該表是空的,沒有任何數(shù)據(jù)。如何向表中添加數(shù)據(jù)呢?這時需要使用INSERT語句。如何檢索表中數(shù)據(jù)呢?可以使用SELECT語句。如果表中數(shù)據(jù)不正確的,那么可以使用UPDATE語句進(jìn)行更新。當(dāng)然,也可以使用DELETE語句刪除表中的數(shù)據(jù)。實(shí)際上,DML語言正是包括了INSERT、SELECT、UPDATE及DELETE等語句。7/26/202320INSERT語句INSERT語句用于向已經(jīng)存在的表中插入新的數(shù)據(jù),一次插入一行數(shù)據(jù)。當(dāng)需要向表中插入多行數(shù)據(jù)時,需要多次使用INSERT語句。【例3-4】使用INSERT語句向ContactDetail表中插入數(shù)據(jù)。7/26/202321UPDATE語句如果表中的數(shù)據(jù)不正確或不合適或者已經(jīng)變化,那么可以使用UPDATE語句更新這些不恰當(dāng)?shù)臄?shù)據(jù)?!纠?-5】使用UPDATE語句將ContactDetail表中330號產(chǎn)品的銷售數(shù)量由2500臺更新為3000臺,單價由1000元更改為990元。7/26/202322DELETE語句使用DELETE語句可以刪除表中的數(shù)據(jù)。一般地,如果在DELETE語句中沒有刪除條件,那么將刪除表中的所有數(shù)據(jù)。需要注意的是,DELETE語句與DROP語句不同。DELETE語句刪除表中的數(shù)據(jù),但是該表對象依然存在。DROP語句則刪除了表對象,表中的數(shù)據(jù)自然也不存在了?!纠?-6】使用DELETE語句刪除ContactDetail表中351號產(chǎn)品的信息。7/26/202323本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023243.5數(shù)據(jù)控制語言數(shù)據(jù)控制語言(DCL)主要用來執(zhí)行有關(guān)安全管理的操作,該語言主要包括GRANT語句、REVOKE語句和DENY語句。GRANT語句可以將指定的安全對象的權(quán)限授予相應(yīng)的主體,REVOKE語句則刪除授予的權(quán)限,DENY語句拒絕授予主體權(quán)限,并且防止主體通過組或角色成員繼承權(quán)限。下面,通過一個簡單示例講述DCL語言的特點(diǎn)。7/26/202325【例3-7】演示DCL語言【例3-7】演示DCL語言的特點(diǎn)。假設(shè)Cleon是ElecTravelCom數(shù)據(jù)庫中的一個用戶,GManager是該數(shù)據(jù)庫中的一個角色,且Cleon用戶是GManager角色的一個成員。7/26/202326本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023273.6事務(wù)管理語言在MicrosoftSQLServer系統(tǒng)中,可以使用BEGINTRANSACTION、COMMITTRANSACTION及ROLLBACKTRANSACTION等事務(wù)管理語言(TML)語句來管理顯式事務(wù)。其中,BEGINTRANSACTION語句用于明確地定義事務(wù)的開始,COMMITTRANSACTION語句用于明確地提交完成的事務(wù)。如果事務(wù)中出現(xiàn)了錯誤,那么可以使用ROLLBACKTRANSACTION語句明確地取消定義的事務(wù)。7/26/202328【例3-8】演示TML語言【例3-8】演示如何使用TML語言。為了確保賬戶之間的轉(zhuǎn)賬過程準(zhǔn)確無誤,需要通過定義明確的事務(wù)來完成這種操作。7/26/202329創(chuàng)建accounting表7/26/202330向accounting表中插入數(shù)據(jù)7/26/202331accounting表中當(dāng)前信息7/26/202332轉(zhuǎn)賬事務(wù)語言示例7/26/202333accounting表中轉(zhuǎn)賬后的信息7/26/202334本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023353.7附加的語言元素除了前面介紹的語句之外,Transact-SQL語言還包括了附加的語言元素。這些附加的語言元素主要包括標(biāo)識符、變量和常量、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、函數(shù)、控制流語言、錯誤處理語言及注釋等。下面,詳細(xì)研究這些內(nèi)容。7/26/202336標(biāo)識符在Transact-SQL語言中,數(shù)據(jù)庫對象的名稱就是其標(biāo)識符。在MicrosoftSQLServer系統(tǒng)中,所有的數(shù)據(jù)庫對象都可以有標(biāo)識符,例如服務(wù)器、數(shù)據(jù)庫、表、視圖、索引、觸發(fā)器、約束等。大多數(shù)對象的標(biāo)識符是必須的,例如創(chuàng)建表時必須為表指定標(biāo)識符。但是,也有一些對象的標(biāo)識符是可選的,例如創(chuàng)建約束時用戶可以不提供標(biāo)識符,其標(biāo)識符由系統(tǒng)自動生成。7/26/202337標(biāo)識符的類型按照標(biāo)識符的使用方式,可以把這些標(biāo)識符分為常規(guī)標(biāo)識符和分割標(biāo)識符兩種類型。在Transact-SQL語句中使用時不用將其分割的標(biāo)識符稱為常規(guī)標(biāo)識符。7/26/202338標(biāo)識符的規(guī)則規(guī)則一,第一個字符必須是下列字符之一:Unicode標(biāo)準(zhǔn)定義的字母或下劃線(_)、符號()或數(shù)字符號(#)。規(guī)則二,后續(xù)字符可以包括:Unicode標(biāo)準(zhǔn)中定義的字母?;纠∽址蚴M(jìn)制數(shù)字。下劃線(_)、符號()、數(shù)字符號(#)或美元符號($)。規(guī)則三,標(biāo)識符不能是Transact-SQL語言的保留字,包括大寫和小寫形式。規(guī)則四,不允許嵌入空格或其他特殊字符。7/26/202339使用分割標(biāo)識符有兩種情況下使用分割標(biāo)識符:一是對象名稱中包含了MicrosoftSQLServer保留字時需要使用分割標(biāo)識符,例如[where]分割標(biāo)識符;二是對象名稱中使用了未列入限定字符的字符,例如[product[1]table]分割標(biāo)識符。使用雙引號分割的標(biāo)識符稱為引用標(biāo)識符,使用方括號分割的標(biāo)識符稱為括號標(biāo)識符。默認(rèn)情況下,只能使用括號標(biāo)識符。當(dāng)QUOTED_IDENTIFIER選項(xiàng)設(shè)置為ON時,才能使用引用的標(biāo)識符。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)中,變量也被稱為局部變量,是可以保存單個特定類型數(shù)據(jù)值的對象。一般地,經(jīng)常在批處理和腳本中使用變量,這些變量可以作為計數(shù)器計算循環(huán)執(zhí)行的次數(shù)或控制循環(huán)執(zhí)行的次數(shù);保存數(shù)據(jù)值以供控制流語句測試;保存存儲過程返回代碼要返回的數(shù)據(jù)值或函數(shù)返回值。在Transact-SQL語言中,可以使用DECLARE語句聲明變量。在聲明變量時需要注意:第一,為變量指定名稱,且名稱的第一個字符必須是;第二,指定該變量的數(shù)據(jù)類型和長度;第三,默認(rèn)情況下將該變量值設(shè)置為NULL。常量是表示特定數(shù)據(jù)值的符號,常量也被稱為字面量。常量的格式取決于它所表示的值的數(shù)據(jù)類型。例如,'Thisisabook.'、'August8,2019'、29157等都是常量。對于字符常量或時間日期型常量,需要使用單引號引起來。7/26/202344【例3-10】演示如何定義和使用變量。7/26/202345運(yùn)算符運(yùn)算符是一種符號,用來指定要在一個或多個表達(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)算符可以用于對兩個表達(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控制流語言一般地,結(jié)構(gòu)化程序設(shè)計語言的基本結(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í)行狀況對程序的執(zhí)行順序進(jìn)行調(diào)整。在Transact-SQL語言中,用于控制語句流的語言被稱為控制流語言。MicrosoftSQLServer2019系統(tǒng)提供了8種控制流語句,這些語句的說明如表3-7所示。7/26/202354【例3-18】演示如何使用控制流語言7/26/202355錯誤捕捉語言為了增強(qiáng)程序的健壯性,必須對程序中可能出現(xiàn)的錯誤進(jìn)行及時處理。在Transact-SQL語言中,可以使用兩種方式處理發(fā)生的錯誤,即使用TRY…CATCH構(gòu)造和使用ERROR函數(shù)。在Transact-SQL語句中,可以使用TRY…CATCH構(gòu)造來處理Transact-SQL代碼中的錯誤。TRY…CATCH構(gòu)造由一個TRY塊和一個CATCH塊組成,如果在TRY塊中包含了Transact-SQL語句中檢測到的錯誤條件,那么控制將被傳遞到CATCH塊中以便處理該錯誤。ERROR函數(shù)可以用于捕捉上一個Transact-SQL語句生成的錯誤號。7/26/202356【例3-19】演示使用TRY…CATCH7/26/202357【例3-20】演示使用ERROR函數(shù)7/26/202358注釋所有的程序設(shè)計語言都有注釋。注釋是程序代碼中不執(zhí)行的文本字符串,用于對代碼進(jìn)行說明或暫時僅用正在進(jìn)行診斷的部分語句。一般地,注釋主要描述程序名稱、作者名稱、變量說明、代碼更改日期、算法描述等。在MicrosoftSQLServer系統(tǒng)中支持兩種注釋方式,即雙連字符(--)注釋方式和正斜杠星號字符對(/*…*/)注釋方式。7/26/202359【例3-21】演示使用注釋7/26/202360本章內(nèi)容3.1Transact-SQL語言的特點(diǎn)3.2Transact-SQL語言的執(zhí)行方式3.3數(shù)據(jù)定義語言3.4數(shù)據(jù)操縱語言3.5數(shù)據(jù)控制語言3.6事務(wù)管理語言3.7附加的語言元素3.8數(shù)據(jù)類型3.9內(nèi)置函數(shù)3.10上機(jī)練習(xí)3.11習(xí)題7/26/2023613.8數(shù)據(jù)類型本節(jié)將從六個方面研究Transact-SQL語言的數(shù)據(jù)類型。首先,分析數(shù)據(jù)類型的概念、特點(diǎn)和主要類型。然后,講述數(shù)字?jǐn)?shù)據(jù)類型的主要內(nèi)容和特點(diǎn)。之后,描述字符數(shù)據(jù)類型的使用方式。接下來,研究日期和時間數(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ù)的對象都有一個數(shù)據(jù)類型。實(shí)際上,數(shù)據(jù)類型是一種用于指定對象可保存的數(shù)據(jù)的類型。例如,INT數(shù)據(jù)類型的對象只能包含整數(shù)型數(shù)據(jù),DATETIME數(shù)據(jù)類型的對象只能包含符合日期時間格式的數(shù)據(jù)。在MicrosoftSQLServer2019系統(tǒng)中,需要使用數(shù)據(jù)類型的對象包括表中的列、視圖中的列、定義的局部變量、存儲過程中的參數(shù)、Transact-SQL函數(shù)及存儲過程的返回值等。MicrosoftSQLServer2019系統(tǒng)提供了28種數(shù)據(jù)類型。這些數(shù)據(jù)類型可以分為數(shù)字?jǐn)?shù)據(jù)類型、字符數(shù)據(jù)類型、日期和時間數(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ù)據(jù)類型日期和時間數(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ù)類型表示可以存儲整數(shù)精確數(shù)據(jù)。在MicrosoftSQLServer2019系統(tǒng)中,有4種整數(shù)數(shù)據(jù)類型即BIGINT、INT、SMALLINT、TINYINT??梢詮娜≈捣秶烷L度兩個方面理解這些整數(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ù)類型在功能是等價的,只是名稱不同而已。在MicrosoftSQLServer2019系統(tǒng)中,把這兩種數(shù)據(jù)類型實(shí)際上作為完全相同的一種數(shù)據(jù)類型來對待。下面主要介紹DECIMAL數(shù)據(jù)類型的特點(diǎn)和使用方式。7/26/202372MONEY和SMALLMONEY數(shù)據(jù)類型如果希望存儲代表貨幣數(shù)值的數(shù)據(jù),那么可以使用MONEY和SMALLMONEY數(shù)據(jù)類型。這兩種數(shù)據(jù)類型的差別在于存儲字節(jié)的大小和取值范圍不同。在MicrosoftSQLServer2019系統(tǒng)中,MONEY數(shù)據(jù)類型需要耗費(fèi)8個存儲字節(jié),其取值范圍是-922,337,203,685,477.5808至922,337,203,685,477.5807。SMALLMONEY數(shù)據(jù)類型只需要4個存儲字節(jié),取值范圍是-214,748.3648至214,748.3647。7/26/202373【例3-23】演示MONEY數(shù)據(jù)類型7/26/202374FLOAT或REAL數(shù)據(jù)類型如果希望進(jìn)行科學(xué)計算,并且希望存儲更大的數(shù)值,但是對數(shù)據(jù)的精度要求并不是絕對的嚴(yán)格,那么應(yīng)該考慮使用FLOAT或REAL數(shù)據(jù)類型。FLOAT或REAL數(shù)據(jù)類型是用于表示數(shù)值數(shù)的大致數(shù)據(jù)值的數(shù)據(jù)類型。7/26/202375BITBIT是可以存儲1、0或NULL數(shù)據(jù)的數(shù)據(jù)類型。這些數(shù)據(jù)主要是用于一些條件邏輯判斷。也可以把TRUE和FALSE數(shù)據(jù)存儲到BIT數(shù)據(jù)類型中,這時需要按照字符格式存儲TRUE和FALSE數(shù)據(jù)。7/26/202376字符數(shù)據(jù)類型字符數(shù)據(jù)類型用于存儲固定長度或可變長度的字符數(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ù)據(jù)如果希望存儲日期和時間數(shù)據(jù),那么可以使用DATETIME或SMALLDATETIME數(shù)據(jù)類型。這兩種數(shù)據(jù)類型的差別在于其表示的日期和時間范圍不同、時間精確度也不同。DATETIME數(shù)據(jù)類型可以表示的范圍是1753年1月1日至9999年12月31日,時間精確度是3.33毫秒。SMALLDATETIME數(shù)據(jù)類型可以表示的范圍是1900年1月1日至2079年12月31日,時間精確度是1分鐘。建議用戶在大型應(yīng)用程序中不要使用SMALLDATETIME數(shù)據(jù)類型,避免出現(xiàn)類似千年蟲的問題。因?yàn)?079年12月31日不是一個特別遙遠(yuǎn)的日期。7/26/202378【例3-24】演示如何使用SETDATEFORMAT語句7/26/202379二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型包括BINARY、VARBINARY和IMAGE3種數(shù)據(jù)類型,可以用于存儲二進(jìn)制數(shù)據(jù)。其中,BINARY可以用于存儲固定長度的二進(jìn)制數(shù)據(jù),VARBINARY用于存儲可變長度的二進(jìn)制數(shù)據(jù)。BINARY(n)和VARBINARY(n)的數(shù)據(jù)長度由n值來確定,n的取值范圍是1至8000。IMAGE數(shù)據(jù)類型用于存儲圖像信息。但是,在MicrosoftSQLServer2019系統(tǒng)中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024裝飾工程合同書范本
- 2024深圳市動產(chǎn)拍賣行委托拍賣合同
- 2024廣告征集代理的合同范本
- 2024學(xué)校臨時工合同書
- 2024聘請法律顧問合同模板
- 2024年衛(wèi)星通信傳輸系統(tǒng)項(xiàng)目發(fā)展計劃
- 2024小產(chǎn)權(quán)合作建房合同范本
- 2024年三元催化凈化器項(xiàng)目合作計劃書
- 2024茶葉銷售合同范本
- 2024新運(yùn)輸合同格式
- 大學(xué)生創(chuàng)業(yè)英語智慧樹知到期末考試答案章節(jié)答案2024年廣西師范大學(xué)
- 個人停車位租賃合同范本(2024版)
- 飛機(jī)儀電與飛控系統(tǒng)原理智慧樹知到期末考試答案章節(jié)答案2024年中國人民解放軍海軍航空大學(xué)
- 燃?xì)饬髁坑嬻w積修正儀校準(zhǔn)規(guī)范
- 大班語言課《石頭小豬》教案設(shè)計
- 2024版小程序開發(fā)服務(wù)合同范本
- 腫瘤物理消融規(guī)范化培訓(xùn)考試題
- 采購管理制度設(shè)計方案畢業(yè)設(shè)計(2篇)
- 敘事護(hù)理案例分享演講課件
- 疾控中心:常見傳染病防治手冊
- 收銀審核員考試:收銀員試題及答案(三)
評論
0/150
提交評論