SQLServer2008基礎(chǔ)教程(5)_第1頁
SQLServer2008基礎(chǔ)教程(5)_第2頁
SQLServer2008基礎(chǔ)教程(5)_第3頁
SQLServer2008基礎(chǔ)教程(5)_第4頁
SQLServer2008基礎(chǔ)教程(5)_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2021年10月27日第1頁第第5章章 Transact-SQL語言語言本章概述 本章要點(diǎn)本章內(nèi)容2021年10月27日第2頁本章概述本章概述l如何方便地在數(shù)據(jù)庫中執(zhí)行訪問數(shù)據(jù)庫對象、查詢業(yè)務(wù)數(shù)如何方便地在數(shù)據(jù)庫中執(zhí)行訪問數(shù)據(jù)庫對象、查詢業(yè)務(wù)數(shù)據(jù)等各種操作呢?這需要掌握使用據(jù)等各種操作呢?這需要掌握使用Transact-SQL語言的語言的技術(shù)。技術(shù)。Transact-SQL語言是微軟公司在關(guān)系型數(shù)據(jù)庫管語言是微軟公司在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)理系統(tǒng)Microsoft SQL Server中的中的ISO SQL的實(shí)現(xiàn)。的實(shí)現(xiàn)。SQL(Structure Query Language,結(jié)構(gòu)化查詢語言,

2、結(jié)構(gòu)化查詢語言)語語言是國際標(biāo)準(zhǔn)化組織言是國際標(biāo)準(zhǔn)化組織(International Standardize Organization,ISO)采納的標(biāo)準(zhǔn)數(shù)據(jù)庫語言。通過使用采納的標(biāo)準(zhǔn)數(shù)據(jù)庫語言。通過使用Transact-SQL語言,用戶幾乎可以完成語言,用戶幾乎可以完成SQL Server數(shù)據(jù)數(shù)據(jù)庫中的各種操作。本章全面介紹庫中的各種操作。本章全面介紹Transact-SQL語言的特語言的特點(diǎn)和使用方式。點(diǎn)和使用方式。2021年10月27日第3頁本章要點(diǎn)本章要點(diǎn)lTransact-SQL語言和語言和SQL語言之間的關(guān)系語言之間的關(guān)系lTransact-SQL語言的特點(diǎn)和執(zhí)行方式語言的特點(diǎn)和執(zhí)

3、行方式l數(shù)據(jù)定義語言的類型和特點(diǎn)數(shù)據(jù)定義語言的類型和特點(diǎn)l數(shù)據(jù)操縱語言的類型和特點(diǎn)數(shù)據(jù)操縱語言的類型和特點(diǎn)l數(shù)據(jù)控制語言的類型和特點(diǎn)數(shù)據(jù)控制語言的類型和特點(diǎn)l事務(wù)管理語言的類型和特點(diǎn)事務(wù)管理語言的類型和特點(diǎn)l附加語言元素的類型和特點(diǎn)附加語言元素的類型和特點(diǎn)2021年10月27日第4頁本章內(nèi)容本章內(nèi)容5.1 概述概述5.2 Transact-SQL語言的執(zhí)行方式語言的執(zhí)行方式5.3 數(shù)據(jù)定義語言數(shù)據(jù)定義語言5.4 數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言5.5 數(shù)據(jù)控制語言數(shù)據(jù)控制語言5.6 事務(wù)管理語言事務(wù)管理語言5.7 附加的語言元素附加的語言元素5.8 數(shù)據(jù)類型數(shù)據(jù)類型5.9 內(nèi)置函數(shù)內(nèi)置函數(shù)5.10 本

4、章小結(jié)本章小結(jié)5.1 概述概述l1970年年6月,埃德加月,埃德加考特考特(Edgar Frank Codd)在在Communications of ACM 上發(fā)表了上發(fā)表了大型共享大型共享數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型數(shù)據(jù)庫數(shù)據(jù)的關(guān)系模型一文。首次明確而清晰一文。首次明確而清晰地為數(shù)據(jù)庫系統(tǒng)提出了一種嶄新的模型,地為數(shù)據(jù)庫系統(tǒng)提出了一種嶄新的模型, 即關(guān)系即關(guān)系模型。模型。1970 年以后,考特繼續(xù)致力于完善與發(fā)展年以后,考特繼續(xù)致力于完善與發(fā)展關(guān)系理論。關(guān)系理論。1972 年,他提出了關(guān)系代數(shù)和關(guān)系演年,他提出了關(guān)系代數(shù)和關(guān)系演算的概念,定義了關(guān)系的并、交、投影、選擇、算的概念,定義了關(guān)系的并、交、

5、投影、選擇、連接等各種基本運(yùn)算,為連接等各種基本運(yùn)算,為SQL語言的形成和發(fā)展語言的形成和發(fā)展奠定了理論基礎(chǔ)。奠定了理論基礎(chǔ)。1979年,年,SQL在商業(yè)數(shù)據(jù)庫中在商業(yè)數(shù)據(jù)庫中成功得到了應(yīng)用。成功得到了應(yīng)用。2021年10月27日第5頁標(biāo)準(zhǔn)版本標(biāo)準(zhǔn)版本l1986年,美國國家標(biāo)準(zhǔn)化組織正式發(fā)表了編號為年,美國國家標(biāo)準(zhǔn)化組織正式發(fā)表了編號為X3.135-1986的的SQL標(biāo)準(zhǔn),并且在標(biāo)準(zhǔn),并且在1987年得到了年得到了ISO組織的認(rèn)可,組織的認(rèn)可,被命名為被命名為ISO9075-1987。l后來這個標(biāo)準(zhǔn)在后來這個標(biāo)準(zhǔn)在1992、1999、2003、2006、2008年等不年等不斷地得到了擴(kuò)充和完善

6、。斷地得到了擴(kuò)充和完善。1992年發(fā)布的標(biāo)準(zhǔn)是年發(fā)布的標(biāo)準(zhǔn)是SQL92,也稱為也稱為SQL2。1999年發(fā)布的標(biāo)準(zhǔn)稱為年發(fā)布的標(biāo)準(zhǔn)稱為SQL:1999,也稱,也稱為為SQL3。該版本增加了迭代查詢、觸發(fā)器、控制流以及。該版本增加了迭代查詢、觸發(fā)器、控制流以及面向?qū)ο蠊δ?。面向?qū)ο蠊δ堋?003年,年,SQL標(biāo)準(zhǔn)引入了標(biāo)準(zhǔn)引入了XML支持、自支持、自動生成值等特征。動生成值等特征。2006年的標(biāo)準(zhǔn)在年的標(biāo)準(zhǔn)在XML數(shù)據(jù)的存儲和查數(shù)據(jù)的存儲和查詢方面有了更多的增強(qiáng)。詢方面有了更多的增強(qiáng)。2021年10月27日第6頁Transact-SQL語言語言lTransact-SQL語言是微軟公司在語言是微軟

7、公司在Microsoft SQL Server系統(tǒng)中使用的語言,系統(tǒng)中使用的語言,是對是對SQL語言的一種擴(kuò)展形式。語言的一種擴(kuò)展形式。lTransact-SQL語言是一種交互式查詢語言,語言是一種交互式查詢語言,具有功能強(qiáng)大、簡單易學(xué)的特點(diǎn)。具有功能強(qiáng)大、簡單易學(xué)的特點(diǎn)。2021年10月27日第7頁特點(diǎn)特點(diǎn)lTransact-SQL語言有語言有4個特點(diǎn):一是一體個特點(diǎn):一是一體化的特點(diǎn),集數(shù)據(jù)定義語言、數(shù)據(jù)操縱語化的特點(diǎn),集數(shù)據(jù)定義語言、數(shù)據(jù)操縱語言、數(shù)據(jù)控制語言、事務(wù)管理語言和附加言、數(shù)據(jù)控制語言、事務(wù)管理語言和附加語言元素為一體。二是有兩種使用方式,語言元素為一體。二是有兩種使用方式,即

8、交互使用方式和嵌入到高級語言中的使即交互使用方式和嵌入到高級語言中的使用方式。三是非過程化語言,只需要提出用方式。三是非過程化語言,只需要提出“干什么干什么”,不需要指出,不需要指出“如何干如何干”,語,語句的操作過程由系統(tǒng)自動完成。四是類似句的操作過程由系統(tǒng)自動完成。四是類似于人的思維習(xí)慣,容易理解和掌握。于人的思維習(xí)慣,容易理解和掌握。2021年10月27日第8頁類型類型l在在Microsoft SQL Server 2008系統(tǒng)中,根系統(tǒng)中,根據(jù)據(jù)Transact-SQL語言的功能特點(diǎn),可以把語言的功能特點(diǎn),可以把Transact-SQL語言分為語言分為5種類型,即數(shù)據(jù)種類型,即數(shù)據(jù)定義

9、語言、數(shù)據(jù)操縱語言、數(shù)據(jù)控制語言、定義語言、數(shù)據(jù)操縱語言、數(shù)據(jù)控制語言、事務(wù)管理語言和附加的語言元素。事務(wù)管理語言和附加的語言元素。2021年10月27日第9頁5.2 Transact-SQL語言的執(zhí)行語言的執(zhí)行方式方式l在在Microsoft SQL Server 2008系統(tǒng)中,主系統(tǒng)中,主要使用要使用SQL Server Management Studio工具來執(zhí)行工具來執(zhí)行Transact-SQL語言編寫的查詢語言編寫的查詢語句。語句。l除此之外,還可以使用除此之外,還可以使用sqlcmd實(shí)用命令、實(shí)用命令、PowerShell工具來執(zhí)行工具來執(zhí)行Transact-SQL語句。語句。l

10、下面主要介紹下面主要介紹SQL Server Management Studio工具的特點(diǎn)。工具的特點(diǎn)。2021年10月27日第10頁在查詢窗口中執(zhí)行在查詢窗口中執(zhí)行Transact-SQL語句語句2021年10月27日第11頁5.3 數(shù)據(jù)定義語言數(shù)據(jù)定義語言l數(shù)據(jù)定義語言用于創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對數(shù)據(jù)定義語言用于創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫對象,為數(shù)據(jù)庫操作提供對象。象,為數(shù)據(jù)庫操作提供對象。l例如,數(shù)據(jù)庫以及表、觸發(fā)器、存儲過程、例如,數(shù)據(jù)庫以及表、觸發(fā)器、存儲過程、視圖、索引、函數(shù)、類型及用戶等都是數(shù)視圖、索引、函數(shù)、類型及用戶等都是數(shù)據(jù)庫中的對象,需要定義后才能使用。據(jù)庫中的對象,需要定義后才能使

11、用。l在在DDL中,主要的中,主要的Transact-SQL語句包括語句包括CREATE語句、語句、ALTER語句和語句和DROP語句。語句。2021年10月27日第12頁CREATE語句示例語句示例2021年10月27日第13頁ALTER語句示例語句示例2021年10月27日第14頁DROP語句示例語句示例2021年10月27日第15頁5.4 數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言l數(shù)據(jù)操縱語言主要是用于操縱表、視圖中數(shù)據(jù)的數(shù)據(jù)操縱語言主要是用于操縱表、視圖中數(shù)據(jù)的語句。當(dāng)創(chuàng)建表對象之后,初始狀態(tài)時該表是空語句。當(dāng)創(chuàng)建表對象之后,初始狀態(tài)時該表是空的,沒有任何數(shù)據(jù)。如何向表中添加數(shù)據(jù)呢?這的,沒有任何數(shù)據(jù)

12、。如何向表中添加數(shù)據(jù)呢?這時需要使用時需要使用INSERT語句。如何檢索表中數(shù)據(jù)呢?語句。如何檢索表中數(shù)據(jù)呢?可以使用可以使用SELECT語句。如果表中數(shù)據(jù)不正確,語句。如果表中數(shù)據(jù)不正確,可以使用可以使用UPDATE語句進(jìn)行更新。當(dāng)然,也可以語句進(jìn)行更新。當(dāng)然,也可以使用使用DELETE語句刪除表中的數(shù)據(jù)。語句刪除表中的數(shù)據(jù)。l實(shí)際上,實(shí)際上,DML語言包括了語言包括了INSERT、SELECT、UPDATE和和DELETE等語句。等語句。2021年10月27日第16頁使用使用INSERT語句插入數(shù)據(jù)語句插入數(shù)據(jù)2021年10月27日第17頁使用使用UPDATE語句更新數(shù)據(jù)語句更新數(shù)據(jù)202

13、1年10月27日第18頁使用使用DELETE語句刪除數(shù)據(jù)語句刪除數(shù)據(jù)2021年10月27日第19頁5.5 數(shù)據(jù)控制語言數(shù)據(jù)控制語言l數(shù)據(jù)控制語言數(shù)據(jù)控制語言(DCL)主要用來執(zhí)行有關(guān)安全主要用來執(zhí)行有關(guān)安全管理的操作,該語言主要包括管理的操作,該語言主要包括GRANT語句、語句、REVOKE語句和語句和DENY語句。語句。lGRANT語句可以將指定的安全對象的權(quán)限語句可以將指定的安全對象的權(quán)限授予相應(yīng)的主體,授予相應(yīng)的主體,REVOKE語句則刪除授語句則刪除授予的權(quán)限,予的權(quán)限,DENY語句拒絕授予主體權(quán)限,語句拒絕授予主體權(quán)限,并且防止主體通過組或角色成員繼承權(quán)限。并且防止主體通過組或角色成

14、員繼承權(quán)限。2021年10月27日第20頁使用使用DCL語言示例語言示例2021年10月27日第21頁5.6 事務(wù)管理語言事務(wù)管理語言l在在Microsoft SQL Server系統(tǒng)中,可以使用系統(tǒng)中,可以使用BEGIN TRANSACTION、COMMIT TRANSA- CTION和和ROLLBACK TRANSACTION等事務(wù)管等事務(wù)管理語言理語言(TML)語句來管理顯式事務(wù)。語句來管理顯式事務(wù)。l其中,其中,BEGIN TRANSACTION語句用于明確地語句用于明確地定義事務(wù)的開始,定義事務(wù)的開始,COMMIT TRANSACTION語句語句用于明確地提交完成的事務(wù)。如果事務(wù)中出

15、現(xiàn)了用于明確地提交完成的事務(wù)。如果事務(wù)中出現(xiàn)了錯誤,可以使用錯誤,可以使用ROLLBACK TRANSA CTION語語句明確地取消定義的事務(wù)。句明確地取消定義的事務(wù)。2021年10月27日第22頁accounting表中轉(zhuǎn)賬前各賬戶的表中轉(zhuǎn)賬前各賬戶的信息信息2021年10月27日第23頁使用事務(wù)管理語言示例使用事務(wù)管理語言示例2021年10月27日第24頁accounting表中轉(zhuǎn)賬后各賬戶的表中轉(zhuǎn)賬后各賬戶的信息信息2021年10月27日第25頁5.7 附加的語言元素附加的語言元素l除了前面介紹的語句之外,除了前面介紹的語句之外,Transact-SQL語言還包括了附加的語言元素。語言還

16、包括了附加的語言元素。l這些附加的語言元素主要包括標(biāo)識符、變這些附加的語言元素主要包括標(biāo)識符、變量和常量、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、量和常量、運(yùn)算符、表達(dá)式、數(shù)據(jù)類型、函數(shù)、控制流語言、錯誤處理語言和注釋函數(shù)、控制流語言、錯誤處理語言和注釋等。等。l下面,詳細(xì)介紹這些內(nèi)容。下面,詳細(xì)介紹這些內(nèi)容。2021年10月27日第26頁標(biāo)識符標(biāo)識符l在在Transact-SQL語言中,數(shù)據(jù)庫對象的名稱就是語言中,數(shù)據(jù)庫對象的名稱就是其標(biāo)識符。其標(biāo)識符。l在在Microsoft SQL Server系統(tǒng)中,所有的數(shù)據(jù)庫系統(tǒng)中,所有的數(shù)據(jù)庫對象都可以有標(biāo)識符,例如服務(wù)器、數(shù)據(jù)庫、表、對象都可以有標(biāo)識符,例如

17、服務(wù)器、數(shù)據(jù)庫、表、視圖、索引、觸發(fā)器和約束等。大多數(shù)對象的標(biāo)視圖、索引、觸發(fā)器和約束等。大多數(shù)對象的標(biāo)識符是必需的,例如,創(chuàng)建表時必須為表指定標(biāo)識符是必需的,例如,創(chuàng)建表時必須為表指定標(biāo)識符。但是,也有一些對象的標(biāo)識符是可選的,識符。但是,也有一些對象的標(biāo)識符是可選的,例如,創(chuàng)建約束時用戶可以不提供標(biāo)識符,其標(biāo)例如,創(chuàng)建約束時用戶可以不提供標(biāo)識符,其標(biāo)識符由系統(tǒng)自動生成。識符由系統(tǒng)自動生成。2021年10月27日第27頁分割標(biāo)識符分割標(biāo)識符l有兩種情況下使用分割標(biāo)識符:對象名稱中包含有兩種情況下使用分割標(biāo)識符:對象名稱中包含了了Microsoft SQL Server保留字,例如保留字,例如

18、where分割標(biāo)識符;對象名稱中使用了未列入限定字符分割標(biāo)識符;對象名稱中使用了未列入限定字符的字符,例如的字符,例如product1 table分割標(biāo)識符。分割標(biāo)識符。l使用雙引號分割的標(biāo)識符稱為引用的標(biāo)識符,使使用雙引號分割的標(biāo)識符稱為引用的標(biāo)識符,使用方括號分割的標(biāo)識符稱為括在括號中的標(biāo)識符。用方括號分割的標(biāo)識符稱為括在括號中的標(biāo)識符。默認(rèn)情況下,只能使用括在括號中的標(biāo)識符。當(dāng)默認(rèn)情況下,只能使用括在括號中的標(biāo)識符。當(dāng)QUOTED_IDENTIFIER選項(xiàng)設(shè)置為選項(xiàng)設(shè)置為ON時,才能時,才能使用引用的標(biāo)識符。使用引用的標(biāo)識符。2021年10月27日第28頁變量和常量變量和常量l在在Mic

19、rosoft SQL Server 2008系統(tǒng)中,變系統(tǒng)中,變量也被稱為局部變量,是可以保存單個特量也被稱為局部變量,是可以保存單個特定類型數(shù)據(jù)值的對象。定類型數(shù)據(jù)值的對象。l一般地,經(jīng)常在批處理和腳本中使用變量,一般地,經(jīng)常在批處理和腳本中使用變量,這些變量可以作為計數(shù)器計算循環(huán)執(zhí)行的這些變量可以作為計數(shù)器計算循環(huán)執(zhí)行的次數(shù)或控制循環(huán)執(zhí)行的次數(shù);也可以保存次數(shù)或控制循環(huán)執(zhí)行的次數(shù);也可以保存數(shù)據(jù)值以供控制流語句測試;或者保存存數(shù)據(jù)值以供控制流語句測試;或者保存存儲過程返回代碼要返回的數(shù)據(jù)值或函數(shù)返儲過程返回代碼要返回的數(shù)據(jù)值或函數(shù)返回值。回值。2021年10月27日第29頁聲明和賦值聲明和

20、賦值l在在Transact-SQL語言中,可以使用語言中,可以使用DECLARE語句聲明語句聲明變量。在聲明變量時需要注意:第一,為變量指定名稱,變量。在聲明變量時需要注意:第一,為變量指定名稱,且名稱的第一個字符必須是且名稱的第一個字符必須是;第二,指定該變量的數(shù)據(jù);第二,指定該變量的數(shù)據(jù)類型和長度;第三,默認(rèn)情況下將該變量值設(shè)置為類型和長度;第三,默認(rèn)情況下將該變量值設(shè)置為NULL。l可以在一個可以在一個DECLARE語句中聲明多個變量,變量之間使語句中聲明多個變量,變量之間使用逗號分割開。變量的作用域是可以引用該變量的用逗號分割開。變量的作用域是可以引用該變量的Transact-SQL語

21、句的范圍。變量的作用域從聲明變量的語句的范圍。變量的作用域從聲明變量的地方開始到聲明變量的批處理的結(jié)尾。地方開始到聲明變量的批處理的結(jié)尾。l有兩種為變量賦值的方式:使用有兩種為變量賦值的方式:使用SET語句為變量賦值和使語句為變量賦值和使用用SELECT語句選擇列表中當(dāng)前所引用值來為變量賦值。語句選擇列表中當(dāng)前所引用值來為變量賦值。2021年10月27日第30頁使用變量使用變量2021年10月27日第31頁常量常量l常量是表示特定數(shù)據(jù)值的符號,常量也被常量是表示特定數(shù)據(jù)值的符號,常量也被稱為字面量。稱為字面量。l常量的格式取決于它所表示的值的數(shù)據(jù)類常量的格式取決于它所表示的值的數(shù)據(jù)類型。例如,

22、型。例如,This is a book.、May 1, 2006、98321等都是常量。對于字符常量等都是常量。對于字符常量或時間日期型常量,需要使用單引號引起或時間日期型常量,需要使用單引號引起來。來。2021年10月27日第32頁運(yùn)算符運(yùn)算符l運(yùn)算符是一種符號,用來指定要在一個或運(yùn)算符是一種符號,用來指定要在一個或多個表達(dá)式中執(zhí)行的操作。在多個表達(dá)式中執(zhí)行的操作。在Microsoft SQL Server 2008系統(tǒng)中,可以使用的運(yùn)系統(tǒng)中,可以使用的運(yùn)算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、字符串串聯(lián)運(yùn)算符、按位運(yùn)賦值運(yùn)算符、字符串串聯(lián)運(yùn)算符、

23、按位運(yùn)算符、一元運(yùn)算符和比較運(yùn)算符等。算符、一元運(yùn)算符和比較運(yùn)算符等。l算術(shù)運(yùn)算符可以用于對兩個表達(dá)式進(jìn)行數(shù)算術(shù)運(yùn)算符可以用于對兩個表達(dá)式進(jìn)行數(shù)學(xué)運(yùn)算,其類型如表學(xué)運(yùn)算,其類型如表5-1所示。所示。2021年10月27日第33頁使用算術(shù)運(yùn)算符使用算術(shù)運(yùn)算符2021年10月27日第34頁使用邏輯運(yùn)算符使用邏輯運(yùn)算符2021年10月27日第35頁使用賦值運(yùn)算符使用賦值運(yùn)算符2021年10月27日第36頁使用字符串串聯(lián)運(yùn)算符使用字符串串聯(lián)運(yùn)算符2021年10月27日第37頁使用位運(yùn)算符使用位運(yùn)算符2021年10月27日第38頁使用比較運(yùn)算符使用比較運(yùn)算符2021年10月27日第39頁表達(dá)式表達(dá)式l在

24、在Transact-SQL語言中,表達(dá)式是由標(biāo)識符、變量、常語言中,表達(dá)式是由標(biāo)識符、變量、常量、標(biāo)量函數(shù)、子查詢以及運(yùn)算符等的組合。在量、標(biāo)量函數(shù)、子查詢以及運(yùn)算符等的組合。在Microsoft SQL Server 2008系統(tǒng)中,表達(dá)式可以在多個系統(tǒng)中,表達(dá)式可以在多個不同的位置使用,這些位置包括查詢中檢索數(shù)據(jù)的一部分、不同的位置使用,這些位置包括查詢中檢索數(shù)據(jù)的一部分、搜索數(shù)據(jù)的條件等。搜索數(shù)據(jù)的條件等。l表達(dá)式可以分為簡單表達(dá)式和復(fù)雜表達(dá)式兩種類型。簡單表達(dá)式可以分為簡單表達(dá)式和復(fù)雜表達(dá)式兩種類型。簡單表達(dá)式只是一個變量、常量、列名或標(biāo)量函數(shù),復(fù)雜表達(dá)表達(dá)式只是一個變量、常量、列名或

25、標(biāo)量函數(shù),復(fù)雜表達(dá)式是由兩個或多個簡單表達(dá)式通過使用運(yùn)算符連接起來的式是由兩個或多個簡單表達(dá)式通過使用運(yùn)算符連接起來的表達(dá)式。在復(fù)雜表達(dá)式中,兩個或多個表達(dá)式有相同的數(shù)表達(dá)式。在復(fù)雜表達(dá)式中,兩個或多個表達(dá)式有相同的數(shù)據(jù)類型,優(yōu)先級低的數(shù)據(jù)類型可以隱式地轉(zhuǎn)換為優(yōu)先級高據(jù)類型,優(yōu)先級低的數(shù)據(jù)類型可以隱式地轉(zhuǎn)換為優(yōu)先級高的數(shù)據(jù)類型。的數(shù)據(jù)類型。2021年10月27日第40頁使用復(fù)雜表達(dá)式使用復(fù)雜表達(dá)式2021年10月27日第41頁控制流語言控制流語言l一般地,結(jié)構(gòu)化程序設(shè)計語言的基本結(jié)構(gòu)一般地,結(jié)構(gòu)化程序設(shè)計語言的基本結(jié)構(gòu)是順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。是順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序

26、結(jié)構(gòu)是一種自然結(jié)構(gòu),條件分支結(jié)構(gòu)順序結(jié)構(gòu)是一種自然結(jié)構(gòu),條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)都需要根據(jù)程序的執(zhí)行狀況對和循環(huán)結(jié)構(gòu)都需要根據(jù)程序的執(zhí)行狀況對程序的執(zhí)行順序進(jìn)行調(diào)整。程序的執(zhí)行順序進(jìn)行調(diào)整。l在在Transact-SQL語言中,用于控制語句流語言中,用于控制語句流的語言被稱為控制流語言。的語言被稱為控制流語言。Microsoft SQL Server 2008系統(tǒng)提供了系統(tǒng)提供了8種控制流語句,種控制流語句,這些語句如表這些語句如表5-7所示。所示。2021年10月27日第42頁使用控制流語句使用控制流語句2021年10月27日第43頁圖圖5-23示例的流程圖示例的流程圖2021年10月27日第

27、44頁 開 始 計 算 所 有 產(chǎn) 品 的 平 均 價 格 平 均 價 格 800? 結(jié) 束 Y Y N N 錯誤捕捉語言錯誤捕捉語言l為了增強(qiáng)程序的健壯性,必須對程序中可為了增強(qiáng)程序的健壯性,必須對程序中可能出現(xiàn)的錯誤進(jìn)行及時的處理。在能出現(xiàn)的錯誤進(jìn)行及時的處理。在Transact- SQL語言中,可以使用兩種方式語言中,可以使用兩種方式處理發(fā)生的錯誤:使用處理發(fā)生的錯誤:使用TRYCATCH構(gòu)造構(gòu)造和使用和使用ERROR函數(shù)。函數(shù)。l在在Transact-SQL語句中,可以使用語句中,可以使用TRYCATCH構(gòu)造來處理構(gòu)造來處理Transact-SQL代代碼中的錯誤。碼中的錯誤。2021年

28、10月27日第45頁使用使用TRYCATCH構(gòu)造構(gòu)造2021年10月27日第46頁使用使用ERROR函數(shù)函數(shù)2021年10月27日第47頁注釋注釋l所有的程序設(shè)計語言都有注釋。注釋是程序代碼所有的程序設(shè)計語言都有注釋。注釋是程序代碼中不執(zhí)行的文本字符串,用于對代碼進(jìn)行說明或中不執(zhí)行的文本字符串,用于對代碼進(jìn)行說明或暫時僅用正在進(jìn)行診斷的部分語句。暫時僅用正在進(jìn)行診斷的部分語句。l一般地,注釋主要描述程序名稱、作者名稱、變一般地,注釋主要描述程序名稱、作者名稱、變量說明、代碼更改日期以及算法描述等。量說明、代碼更改日期以及算法描述等。l在在Microsoft SQL Server系統(tǒng)中,支持兩種

29、注釋系統(tǒng)中,支持兩種注釋方式,即雙連字符方式,即雙連字符(-)注釋方式和正斜杠星號字符注釋方式和正斜杠星號字符對對(/*/)注釋方式。注釋方式。2021年10月27日第48頁使用注釋使用注釋2021年10月27日第49頁5.8 數(shù)據(jù)類型數(shù)據(jù)類型l本節(jié)將從本節(jié)將從6個方面介紹個方面介紹Transact-SQL語言語言的數(shù)據(jù)類型。首先,分析數(shù)據(jù)類型的概念、的數(shù)據(jù)類型。首先,分析數(shù)據(jù)類型的概念、特點(diǎn)和主要類型。然后,講述數(shù)字?jǐn)?shù)據(jù)類特點(diǎn)和主要類型。然后,講述數(shù)字?jǐn)?shù)據(jù)類型的主要內(nèi)容和特點(diǎn)。之后,描述字符數(shù)型的主要內(nèi)容和特點(diǎn)。之后,描述字符數(shù)據(jù)類型的使用方式。接下來,研究日期和據(jù)類型的使用方式。接下來,研

30、究日期和時間數(shù)據(jù)類型的輸入輸出特點(diǎn)。接著,分時間數(shù)據(jù)類型的輸入輸出特點(diǎn)。接著,分析二進(jìn)制數(shù)據(jù)類型的特點(diǎn)。最后,講述其析二進(jìn)制數(shù)據(jù)類型的特點(diǎn)。最后,講述其他數(shù)據(jù)類型的內(nèi)容和特點(diǎn)。他數(shù)據(jù)類型的內(nèi)容和特點(diǎn)。2021年10月27日第50頁數(shù)據(jù)類型的類型和特點(diǎn)數(shù)據(jù)類型的類型和特點(diǎn)l在在Microsoft SQL Server 2008系統(tǒng)中,包含數(shù)據(jù)的對象都有一個數(shù)系統(tǒng)中,包含數(shù)據(jù)的對象都有一個數(shù)據(jù)類型。實(shí)際上,數(shù)據(jù)類型是一種用于指定對象可保存的數(shù)據(jù)的類型。據(jù)類型。實(shí)際上,數(shù)據(jù)類型是一種用于指定對象可保存的數(shù)據(jù)的類型。例如,例如,INT數(shù)據(jù)類型的對象只能包含整數(shù)型數(shù)據(jù),數(shù)據(jù)類型的對象只能包含整數(shù)型數(shù)據(jù),

31、DATETIME數(shù)據(jù)類數(shù)據(jù)類型的對象只能包含符合日期時間格式的數(shù)據(jù)。型的對象只能包含符合日期時間格式的數(shù)據(jù)。l在在Microsoft SQL Server 2008系統(tǒng)中,需要使用數(shù)據(jù)類型的對象包系統(tǒng)中,需要使用數(shù)據(jù)類型的對象包括表中的列、視圖中的列、定義的局部變量、存儲過程中的參數(shù)、括表中的列、視圖中的列、定義的局部變量、存儲過程中的參數(shù)、Transact-SQL函數(shù)及存儲過程的返回值等。函數(shù)及存儲過程的返回值等。lMicrosoft SQL Server 2008系統(tǒng)提供了系統(tǒng)提供了33種數(shù)據(jù)類型,比種數(shù)據(jù)類型,比SQL Server 2005系統(tǒng)的系統(tǒng)的28種數(shù)據(jù)類型增加了一些數(shù)據(jù)類型。

32、這些數(shù)據(jù)類種數(shù)據(jù)類型增加了一些數(shù)據(jù)類型。這些數(shù)據(jù)類型可以分為數(shù)字?jǐn)?shù)據(jù)類型、字符數(shù)據(jù)類型、日期和時間數(shù)據(jù)類型、二型可以分為數(shù)字?jǐn)?shù)據(jù)類型、字符數(shù)據(jù)類型、日期和時間數(shù)據(jù)類型、二進(jìn)制數(shù)據(jù)類型以及其他數(shù)據(jù)類型。進(jìn)制數(shù)據(jù)類型以及其他數(shù)據(jù)類型。2021年10月27日第51頁數(shù)據(jù)類型數(shù)據(jù)類型l數(shù)字?jǐn)?shù)據(jù)類型包括數(shù)字?jǐn)?shù)據(jù)類型包括BIGINT、INT、SMALLINT、TINYINT、BIT、DECIMAL、NUMERIC、MONEY、SMALLMONEY、FLOAT和和REAL這這11種數(shù)據(jù)類型。種數(shù)據(jù)類型。l字符數(shù)據(jù)類型包括字符數(shù)據(jù)類型包括CHAR、VARCHAR、TEXT、NCHAR、NVARCHAR和和NT

33、EXT 等等6種數(shù)據(jù)類型。種數(shù)據(jù)類型。l日期和時間數(shù)據(jù)類型較以前有了很大的變化,除了日期和時間數(shù)據(jù)類型較以前有了很大的變化,除了DATETIME和和SMALLDATETIME兩種數(shù)據(jù)類型之外,還包括兩種數(shù)據(jù)類型之外,還包括DATE、TIME、DATETIME2、DATETIMEOFFSET數(shù)據(jù)類型,共有數(shù)據(jù)類型,共有6種數(shù)據(jù)類型。種數(shù)據(jù)類型。l二進(jìn)制數(shù)據(jù)類型包括二進(jìn)制數(shù)據(jù)類型包括BINARY、VARBINARY和和IMAGE這這3種數(shù)據(jù)類種數(shù)據(jù)類型。型。l除此之外,除此之外,Microsoft SQL Server 2008系統(tǒng)中還有系統(tǒng)中還有7種其他數(shù)據(jù)類種其他數(shù)據(jù)類型,分別是型,分別是CU

34、RSOR、SQL_VARIANT、TABLE、TIMESTAMP、UNIQUEIDENTIFIER、XML和和HIERARCHYID數(shù)據(jù)類型,其中,數(shù)據(jù)類型,其中,HIERARCHYID是新增的數(shù)據(jù)類型。是新增的數(shù)據(jù)類型。2021年10月27日第52頁數(shù)字?jǐn)?shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型l使用數(shù)字?jǐn)?shù)據(jù)的數(shù)據(jù)類型被稱為數(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ù)類型的數(shù)字可以參加各種數(shù)學(xué)運(yùn)算。還可以為這些數(shù)據(jù)類型繼續(xù)進(jìn)行分類。從這些數(shù)字可以為這些數(shù)據(jù)類型繼續(xù)進(jìn)行分類。從這些數(shù)字是否有小數(shù),可以把這些數(shù)據(jù)類型分為整數(shù)類型是否有小數(shù),可以把這些數(shù)據(jù)類

35、型分為整數(shù)類型和小數(shù)類型。從這些數(shù)字的精度和位數(shù)是否可以和小數(shù)類型。從這些數(shù)字的精度和位數(shù)是否可以明確地確定,可以把這些數(shù)據(jù)類型分為精確數(shù)字明確地確定,可以把這些數(shù)據(jù)類型分為精確數(shù)字類型和近似數(shù)字類型。從是否可以表示金額,可類型和近似數(shù)字類型。從是否可以表示金額,可以分為貨幣數(shù)字類型和非貨幣數(shù)字類型。以分為貨幣數(shù)字類型和非貨幣數(shù)字類型。l下面,詳細(xì)研究每一種數(shù)據(jù)類型的特點(diǎn)。下面,詳細(xì)研究每一種數(shù)據(jù)類型的特點(diǎn)。2021年10月27日第53頁 超出數(shù)據(jù)范圍的溢出錯誤超出數(shù)據(jù)范圍的溢出錯誤2021年10月27日第54頁使用使用MONEY數(shù)據(jù)類型示例數(shù)據(jù)類型示例2021年10月27日第55頁字符數(shù)據(jù)類

36、型字符數(shù)據(jù)類型l字符數(shù)據(jù)類型用于存儲固定長度或可變長字符數(shù)據(jù)類型用于存儲固定長度或可變長度的字符數(shù)據(jù)。在度的字符數(shù)據(jù)。在Microsoft SQL Server 2008系統(tǒng)中,提供了系統(tǒng)中,提供了CHAR、VARCHAR、TEXT、NCHAR、NVARCHAR和和NTEXT等等6種數(shù)據(jù)類型。前種數(shù)據(jù)類型。前3種數(shù)據(jù)類型是非種數(shù)據(jù)類型是非Unicode字符數(shù)據(jù),后字符數(shù)據(jù),后3種是種是Unicode字符字符數(shù)據(jù)。數(shù)據(jù)。2021年10月27日第56頁日期和時間數(shù)據(jù)類型日期和時間數(shù)據(jù)類型l與以前版本相比,與以前版本相比,Microsoft SQL Server 2008系統(tǒng)增加了多個日期和時間數(shù)據(jù)

37、類型。系統(tǒng)增加了多個日期和時間數(shù)據(jù)類型。除了除了DATETIME和和SMALLDATETIME兩種兩種數(shù)據(jù)類型之間,還包括數(shù)據(jù)類型之間,還包括DATE、TIME、DATETIME2、DATETIMEOFFSET數(shù)據(jù)類數(shù)據(jù)類型,共有型,共有6種數(shù)據(jù)類型。種數(shù)據(jù)類型。2021年10月27日第57頁使用日期數(shù)據(jù)使用日期數(shù)據(jù)2021年10月27日第58頁二進(jìn)制數(shù)據(jù)類型二進(jìn)制數(shù)據(jù)類型l二進(jìn)制數(shù)據(jù)類型包括二進(jìn)制數(shù)據(jù)類型包括BINARY、VARBINARY和和IMAGE 3種數(shù)據(jù)類型,可以用于存儲二進(jìn)制數(shù)據(jù)。其中,種數(shù)據(jù)類型,可以用于存儲二進(jìn)制數(shù)據(jù)。其中,BINARY用于存儲固定長度的二進(jìn)制數(shù)據(jù),用于存儲固

38、定長度的二進(jìn)制數(shù)據(jù),VARBINARY用于存儲用于存儲可變長度的二進(jìn)制數(shù)據(jù)。可變長度的二進(jìn)制數(shù)據(jù)。BINARY(n)和和VARBINARY(n)的的數(shù)據(jù)長度由數(shù)據(jù)長度由n值來確定,值來確定,n的取值范圍是的取值范圍是18000。IMAGE數(shù)據(jù)類型用于存儲圖像信息。但是,在數(shù)據(jù)類型用于存儲圖像信息。但是,在Microsoft SQL Server 2008系統(tǒng)中,微軟建議使用系統(tǒng)中,微軟建議使用VARBINARY(MAX)代替代替IMAGE數(shù)據(jù)類型,其中數(shù)據(jù)類型,其中MAX可以達(dá)到的最大存儲字可以達(dá)到的最大存儲字節(jié)為節(jié)為231-1。2021年10月27日第59頁使用二進(jìn)制數(shù)據(jù)使用二進(jìn)制數(shù)據(jù)202

39、1年10月27日第60頁其他數(shù)據(jù)類型其他數(shù)據(jù)類型l除了前面介紹的數(shù)據(jù)類型之外,除了前面介紹的數(shù)據(jù)類型之外,Microsoft SQL Server 2008系統(tǒng)還提供了系統(tǒng)還提供了CURSOR、SQL_VARIANT、TABLE、TIMESTAMP、UNIQUEIDENTIFIER、XML以及以及HIERARCHYID等數(shù)據(jù)類型。等數(shù)據(jù)類型。l使用這些數(shù)據(jù)類型可以完成特殊數(shù)據(jù)對象使用這些數(shù)據(jù)類型可以完成特殊數(shù)據(jù)對象的定義、存儲和使用。的定義、存儲和使用。2021年10月27日第61頁CURSORlCURSOR是變量或存儲過程的輸出參數(shù)使是變量或存儲過程的輸出參數(shù)使用的一種數(shù)據(jù)類型,有時也把這種

40、數(shù)據(jù)類用的一種數(shù)據(jù)類型,有時也把這種數(shù)據(jù)類型稱為游標(biāo)。游標(biāo)提供了一種逐行處理查型稱為游標(biāo)。游標(biāo)提供了一種逐行處理查詢數(shù)據(jù)的功能。該變量只能用于與定義游詢數(shù)據(jù)的功能。該變量只能用于與定義游標(biāo)和使用游標(biāo)有關(guān)的語句中,不能在諸如標(biāo)和使用游標(biāo)有關(guān)的語句中,不能在諸如CREATE TABLE語句中使用。語句中使用。2021年10月27日第62頁SQL_VARIANTlSQL_VARIANT也是一種特殊的數(shù)據(jù)類型,也是一種特殊的數(shù)據(jù)類型,可以用來存儲可以用來存儲Microsoft SQL Server 2008系統(tǒng)支持的各種數(shù)據(jù)類型系統(tǒng)支持的各種數(shù)據(jù)類型(不包括不包括TEXT、NTEXT、IMAGE、TI

41、MESTAMP、SQL_VARIANT數(shù)據(jù)類型的值數(shù)據(jù)類型的值)的值。該數(shù)的值。該數(shù)據(jù)類型可以用在列、變量及用戶定義的函據(jù)類型可以用在列、變量及用戶定義的函數(shù)等返回值中。數(shù)等返回值中。2021年10月27日第63頁TABLElTABLE也是一種非常特殊的數(shù)據(jù)類型,主也是一種非常特殊的數(shù)據(jù)類型,主要用于存儲結(jié)果集以便今后繼續(xù)處理,這要用于存儲結(jié)果集以便今后繼續(xù)處理,這些結(jié)果集往往是通過表值函數(shù)返回的。在些結(jié)果集往往是通過表值函數(shù)返回的。在Microsoft SQL Server 2008系統(tǒng)中,可以系統(tǒng)中,可以將變量和函數(shù)聲明為將變量和函數(shù)聲明為TABLE數(shù)據(jù)類型。在數(shù)據(jù)類型。在其作用范圍內(nèi),其

42、作用范圍內(nèi),TABLE變量可以作為表一變量可以作為表一樣使用。但是,如果樣使用。但是,如果TABLE數(shù)據(jù)類型的變數(shù)據(jù)類型的變量包含的數(shù)據(jù)量非常龐大時,會對系統(tǒng)的量包含的數(shù)據(jù)量非常龐大時,會對系統(tǒng)的性能造成比較大的影響。性能造成比較大的影響。2021年10月27日第64頁TIMESTAMPlTIMESTAMP不是一個日期時間數(shù)據(jù)類型,是一不是一個日期時間數(shù)據(jù)類型,是一個特殊的用于表示先后順序的時戳數(shù)據(jù)類型。該個特殊的用于表示先后順序的時戳數(shù)據(jù)類型。該數(shù)據(jù)類型可以為表中數(shù)據(jù)行加上一個版本戳。每數(shù)據(jù)類型可以為表中數(shù)據(jù)行加上一個版本戳。每一個數(shù)據(jù)庫都有一個時間戳計數(shù)器,當(dāng)對該數(shù)據(jù)一個數(shù)據(jù)庫都有一個時間

43、戳計數(shù)器,當(dāng)對該數(shù)據(jù)庫中包含庫中包含TIMESTAMP列的表執(zhí)行插入或更新操列的表執(zhí)行插入或更新操作時,該計數(shù)器就會增加。一個表最多只能有一作時,該計數(shù)器就會增加。一個表最多只能有一個個TIMESTAMP,每次插入或更新包含,每次插入或更新包含TIMESTAMP列的數(shù)據(jù)行時,就會在列的數(shù)據(jù)行時,就會在TIMESTAMP列中插入增量數(shù)據(jù)庫時戳值。列中插入增量數(shù)據(jù)庫時戳值。2021年10月27日第65頁UNIQUEIDENTIFIERlUNIQUEIDENTIFIER也是一個特殊的數(shù)據(jù)也是一個特殊的數(shù)據(jù)類型。它是一個具有類型。它是一個具有16字節(jié)的全局唯一性字節(jié)的全局唯一性標(biāo)志符,用來確保對象的唯

44、一性??梢栽跇?biāo)志符,用來確保對象的唯一性??梢栽诙x列或變量時使用該數(shù)據(jù)類型,這些定定義列或變量時使用該數(shù)據(jù)類型,這些定義的主要目的是在合并復(fù)制和事務(wù)復(fù)制中義的主要目的是在合并復(fù)制和事務(wù)復(fù)制中確保表中數(shù)據(jù)行的唯一性。確保表中數(shù)據(jù)行的唯一性。2021年10月27日第66頁XMLlXML數(shù)據(jù)類型是從數(shù)據(jù)類型是從Microsoft SQL Server 2005版本開始新增的數(shù)據(jù)類型,用于存儲版本開始新增的數(shù)據(jù)類型,用于存儲XML數(shù)據(jù)??梢韵袷褂脭?shù)據(jù)??梢韵袷褂肐NT數(shù)據(jù)類型一樣地數(shù)據(jù)類型一樣地使用使用XML數(shù)據(jù)類型。需要提醒的是,存儲數(shù)據(jù)類型。需要提醒的是,存儲在在XML數(shù)據(jù)類型中的數(shù)據(jù)實(shí)例的最大值是數(shù)據(jù)類型中的數(shù)據(jù)實(shí)例的最大值是2GB。2021年10月27日第67頁HIERARC

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論