第4章數(shù)據(jù)表的創(chuàng)建與操作_第1頁
第4章數(shù)據(jù)表的創(chuàng)建與操作_第2頁
第4章數(shù)據(jù)表的創(chuàng)建與操作_第3頁
第4章數(shù)據(jù)表的創(chuàng)建與操作_第4頁
第4章數(shù)據(jù)表的創(chuàng)建與操作_第5頁
已閱讀5頁,還剩157頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第4章章 數(shù)據(jù)表的創(chuàng)建與操作數(shù)據(jù)表的創(chuàng)建與操作 4.1 數(shù)據(jù)類型數(shù)據(jù)類型 4.2 運算符與表達式運算符與表達式 4.3 系統(tǒng)內(nèi)置函數(shù)系統(tǒng)內(nèi)置函數(shù) 4.4 用企業(yè)管理器創(chuàng)建數(shù)據(jù)表及約束對象用企業(yè)管理器創(chuàng)建數(shù)據(jù)表及約束對象 4.5 用用T-SQL語句創(chuàng)建數(shù)據(jù)表及約束對象語句創(chuàng)建數(shù)據(jù)表及約束對象 4.6 查看表信息、輸入數(shù)據(jù)、編輯和刪除記錄查看表信息、輸入數(shù)據(jù)、編輯和刪除記錄 4.7 數(shù)據(jù)表及約束對象的刪除數(shù)據(jù)表及約束對象的刪除 4.8 數(shù)據(jù)庫應(yīng)用實例數(shù)據(jù)庫應(yīng)用實例電腦器材銷售管理電腦器材銷售管理的數(shù)據(jù)表的數(shù)據(jù)表 4.9 實訓要求與習題實訓要求與習題 第第4章章 數(shù)據(jù)表的創(chuàng)建與操作數(shù)據(jù)表的創(chuàng)建與操

2、作 學習目的與要求 數(shù)據(jù)表是數(shù)據(jù)庫中最重要的對象,數(shù)據(jù)庫的全部數(shù)據(jù)數(shù)據(jù)表是數(shù)據(jù)庫中最重要的對象,數(shù)據(jù)庫的全部數(shù)據(jù)都存儲在不同的數(shù)據(jù)表中,因而數(shù)據(jù)表的設(shè)計成功與都存儲在不同的數(shù)據(jù)表中,因而數(shù)據(jù)表的設(shè)計成功與否是數(shù)據(jù)庫設(shè)計的關(guān)鍵,將直接影響到數(shù)據(jù)庫使用的否是數(shù)據(jù)庫設(shè)計的關(guān)鍵,將直接影響到數(shù)據(jù)庫使用的合理有效。合理有效。了解了解SQL Server數(shù)據(jù)庫系統(tǒng),掌握數(shù)據(jù)表數(shù)據(jù)庫系統(tǒng),掌握數(shù)據(jù)表的數(shù)據(jù)類型、運算符與表達式、常用系統(tǒng)函數(shù)是創(chuàng)建的數(shù)據(jù)類型、運算符與表達式、常用系統(tǒng)函數(shù)是創(chuàng)建數(shù)據(jù)庫必備的基礎(chǔ)知識。數(shù)據(jù)表及約束對象的創(chuàng)建以數(shù)據(jù)庫必備的基礎(chǔ)知識。數(shù)據(jù)表及約束對象的創(chuàng)建以及數(shù)據(jù)的輸入更新是創(chuàng)建數(shù)據(jù)庫

3、的重要環(huán)節(jié)。通過本及數(shù)據(jù)的輸入更新是創(chuàng)建數(shù)據(jù)庫的重要環(huán)節(jié)。通過本章學習,讀者應(yīng)熟悉并掌握章學習,讀者應(yīng)熟悉并掌握SQL Server數(shù)據(jù)庫的數(shù)據(jù)數(shù)據(jù)庫的數(shù)據(jù)類型、表達式和常用內(nèi)置函數(shù),掌握數(shù)據(jù)表及約束對類型、表達式和常用內(nèi)置函數(shù),掌握數(shù)據(jù)表及約束對象的創(chuàng)建、修改、刪除以及數(shù)據(jù)的輸入、更新、刪除象的創(chuàng)建、修改、刪除以及數(shù)據(jù)的輸入、更新、刪除等操作,獨立創(chuàng)建等操作,獨立創(chuàng)建電腦器材銷售管理電腦器材銷售管理diannaoxs數(shù)數(shù)據(jù)庫的各個數(shù)據(jù)表。據(jù)庫的各個數(shù)據(jù)表。 4.1 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型決定了數(shù)據(jù)的存儲格式、長度、精度等屬性。數(shù)據(jù)類型決定了數(shù)據(jù)的存儲格式、長度、精度等屬性。SQL Ser

4、ver為我們提供了多達為我們提供了多達26種的豐富數(shù)據(jù)類型,用戶還可以自種的豐富數(shù)據(jù)類型,用戶還可以自己定義數(shù)據(jù)類型(見第己定義數(shù)據(jù)類型(見第7章)。章)。 4.1.1、二進制數(shù)據(jù)、二進制數(shù)據(jù) SQL Server用用binary、varbinary 和和image三種數(shù)據(jù)類型來存三種數(shù)據(jù)類型來存儲二進制數(shù)據(jù)。二進制類型可用于存儲聲音圖像等數(shù)字類型的儲二進制數(shù)據(jù)。二進制類型可用于存儲聲音圖像等數(shù)字類型的數(shù)據(jù)。數(shù)據(jù)。1、定長二進制、定長二進制 binary(n) 按按n個字節(jié)的固定長度存放二進制數(shù)據(jù),最大長度為個字節(jié)的固定長度存放二進制數(shù)據(jù),最大長度為8K字節(jié),字節(jié),即即1n8000。 若實際數(shù)

5、據(jù)不足若實際數(shù)據(jù)不足n個字節(jié),則在數(shù)據(jù)尾部加個字節(jié),則在數(shù)據(jù)尾部加0補足補足n個字節(jié)。個字節(jié)。2、變長二進制、變長二進制 varbinary(n) 按不超過按不超過n個字節(jié)的實際長度存放二進制數(shù)據(jù),最大長度個字節(jié)的實際長度存放二進制數(shù)據(jù),最大長度8K字節(jié),即字節(jié),即1n8000。 若實際數(shù)據(jù)不足若實際數(shù)據(jù)不足n個字節(jié),按實際長度存儲數(shù)據(jù),不補充加個字節(jié),按實際長度存儲數(shù)據(jù),不補充加0; 3、圖像二進制、圖像二進制 Image 圖像二進制可存儲不超過圖像二進制可存儲不超過231-1個字節(jié)的二進制數(shù)據(jù),個字節(jié)的二進制數(shù)據(jù),比 如 文 本 文 檔 、比 如 文 本 文 檔 、 E x c e l 圖

6、 表 以 及 圖 像 數(shù) 據(jù) ( 包圖 表 以 及 圖 像 數(shù) 據(jù) ( 包括括.GIF、.BMP、.JPEG文件)等。文件)等。 注意:注意:l l 二進制數(shù)據(jù)常量不允許加引號,默認用十進制書寫,二進制數(shù)據(jù)常量不允許加引號,默認用十進制書寫,如如1234、1011均視為十進制常量,如果使用十六進制則均視為十進制常量,如果使用十六進制則必須加必須加0 x前綴。輸出顯示默認采用十六進制。前綴。輸出顯示默認采用十六進制。l l 若實際數(shù)據(jù)二進制長度超過指定的若實際數(shù)據(jù)二進制長度超過指定的n個字節(jié),用局部變個字節(jié),用局部變量存儲時只截取二進制的前量存儲時只截取二進制的前n個字節(jié),其余二進制位舍掉。個字

7、節(jié),其余二進制位舍掉。l l 數(shù)據(jù)庫中二進制字段的數(shù)據(jù)不能在數(shù)據(jù)表中直接輸入,數(shù)據(jù)庫中二進制字段的數(shù)據(jù)不能在數(shù)據(jù)表中直接輸入,即即“無法編輯該單元無法編輯該單元”。l l 在用在用INSERT或或UPDATE為數(shù)據(jù)表二進制字段輸入、更為數(shù)據(jù)表二進制字段輸入、更新數(shù)據(jù)時,如果超過新數(shù)據(jù)時,如果超過n字節(jié),則系統(tǒng)提示字節(jié),則系統(tǒng)提示“將截斷字符串將截斷字符串或二進制數(shù)據(jù)或二進制數(shù)據(jù)”并終止命令執(zhí)行,不能保存該數(shù)據(jù)。并終止命令執(zhí)行,不能保存該數(shù)據(jù)。 【例【例4-1】二進制數(shù)據(jù)】二進制數(shù)據(jù)1aa2bb3cc4共共40位位5個字節(jié),可個字節(jié),可表示為表示為0 x1aa2bb3cc4 若定義數(shù)據(jù)類型為若定

8、義數(shù)據(jù)類型為binary(6)則數(shù)據(jù)后加則數(shù)據(jù)后加0按按6字節(jié)存儲字節(jié)存儲為:為:0 x1aa2bb3cc400 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為varbinary(6)則按實際數(shù)據(jù)存儲為:則按實際數(shù)據(jù)存儲為:0 x1aa2bb3cc4 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為binary(4)或或varbinary(4),則在局部,則在局部變量中存儲為:變量中存儲為:0 x1aa2bb3c。 存儲到數(shù)據(jù)表字段中時,系統(tǒng)提示存儲到數(shù)據(jù)表字段中時,系統(tǒng)提示“將截斷字符串或?qū)⒔財嘧址蚨M制數(shù)據(jù)二進制數(shù)據(jù)”不能保存該數(shù)據(jù)。不能保存該數(shù)據(jù)。4.1.24.1.2、數(shù)值型數(shù)據(jù)、數(shù)值型數(shù)據(jù) SQL Server

9、SQL Server數(shù)值型數(shù)據(jù)共數(shù)值型數(shù)據(jù)共8 8種,整型種,整型4 4種,實型種,實型4 4種。種。1 1字節(jié)型整數(shù)字節(jié)型整數(shù) TinyIntTinyInt 占占1 1個字節(jié)固定長度內(nèi)存,可存儲個字節(jié)固定長度內(nèi)存,可存儲0-2550-255范圍內(nèi)的任意無范圍內(nèi)的任意無符號整數(shù)。符號整數(shù)。2 2短整型整數(shù)短整型整數(shù) smallIntsmallInt 占占2 2字節(jié)固定長度內(nèi)存,最高位為符號位,可存儲字節(jié)固定長度內(nèi)存,最高位為符號位,可存儲- -32768327673276832767(-2-21515221515-1-1)的任意整數(shù)。)的任意整數(shù)。3 3基本整型整數(shù)基本整型整數(shù) Int Int

10、 或或IntegerInteger 占占4 4字節(jié)固定長度內(nèi)存,高位為符號位,可存儲字節(jié)固定長度內(nèi)存,高位為符號位,可存儲- -2147483648-21474836472147483648-2147483647(-2-23131-2-23131-1-1)范圍內(nèi)的任意整數(shù)。)范圍內(nèi)的任意整數(shù)。4 4長整型整數(shù)長整型整數(shù) BigintBigint 占占8 8字節(jié)固定長度內(nèi)存,高位為符號位,可存儲字節(jié)固定長度內(nèi)存,高位為符號位,可存儲-2-26363到到2 26363-1-1范圍內(nèi)的任意整據(jù)。范圍內(nèi)的任意整據(jù)。 注意:整型數(shù)據(jù)可以在較少字節(jié)里存儲精確的整型數(shù)字,注意:整型數(shù)據(jù)可以在較少字節(jié)里存儲精

11、確的整型數(shù)字,存儲效率高,不可能出現(xiàn)小數(shù)的數(shù)據(jù)應(yīng)盡量選用整數(shù)類型。存儲效率高,不可能出現(xiàn)小數(shù)的數(shù)據(jù)應(yīng)盡量選用整數(shù)類型。 5 5近似值實型浮點數(shù)近似值實型浮點數(shù) realreal 占占4 4字節(jié)固定長度內(nèi)存,最多字節(jié)固定長度內(nèi)存,最多7 7位有效數(shù)字,范圍從位有效數(shù)字,范圍從- -3.40E+383.40E+38到到1.791.79E+38E+38。6 6可變精度實型浮點數(shù)可變精度實型浮點數(shù) float(n)float(n)l l 當當n n的取值為的取值為1-241-24時,數(shù)據(jù)精度是時,數(shù)據(jù)精度是7 7位有效數(shù)字,范圍位有效數(shù)字,范圍從從-3.40E+38-3.40E+38到到1.79E+3

12、81.79E+38,占,占4 4字節(jié)內(nèi)存。字節(jié)內(nèi)存。l l 當當n n的取值為的取值為25-5325-53時,精度是時,精度是1515位有效數(shù)字,范圍從位有效數(shù)字,范圍從- -1.79E+3081.79E+308到到1.79E+3081.79E+308,占,占8 8字節(jié)內(nèi)存。字節(jié)內(nèi)存。l l 實型浮點數(shù)常量可以直接使用科學記數(shù)法的指數(shù)形式實型浮點數(shù)常量可以直接使用科學記數(shù)法的指數(shù)形式書寫。書寫。7 7精確小數(shù)型數(shù)據(jù)精確小數(shù)型數(shù)據(jù) Numeric(p,s)Numeric(p,s)l l p p指定總位數(shù)(不含小數(shù)點),指定總位數(shù)(不含小數(shù)點),p p的取值范圍的取值范圍1p381p38。即。即最

13、多可達最多可達3838位有效數(shù)字,不使用指數(shù)的科學記數(shù)法表示,但位有效數(shù)字,不使用指數(shù)的科學記數(shù)法表示,但取值范圍必須在取值范圍必須在-10-103838到到10103838-1-1之間。之間。l l s s指定其中的小數(shù)位數(shù),指定其中的小數(shù)位數(shù),s s的取值范圍的取值范圍00spsp。l l numericnumeric型數(shù)據(jù)在數(shù)據(jù)表里可帶型數(shù)據(jù)在數(shù)據(jù)表里可帶identityidentity關(guān)鍵字(自動增關(guān)鍵字(自動增長字段)。長字段)。l l numericnumeric型數(shù)據(jù)所占的存儲空間隨精度的不同而不同,一型數(shù)據(jù)所占的存儲空間隨精度的不同而不同,一般說來對應(yīng)關(guān)系為般說來對應(yīng)關(guān)系為:

14、: p p的取值范圍的取值范圍 數(shù)據(jù)所占內(nèi)存字節(jié)數(shù)數(shù)據(jù)所占內(nèi)存字節(jié)數(shù) 1 - 9 51 - 9 5 10-19 9 10-19 9 20-28 13 20-28 13 29-38 17 29-38 178 8精確小數(shù)型數(shù)據(jù)精確小數(shù)型數(shù)據(jù) Decimal(p,s) Decimal(p,s) 或或 Dec(p,s)Dec(p,s)該類型數(shù)據(jù)與該類型數(shù)據(jù)與Numeric(p,s)Numeric(p,s)類型用法相同,所不同的是類型用法相同,所不同的是Decimal(p,s)Decimal(p,s)不能用于數(shù)據(jù)表的不能用于數(shù)據(jù)表的identityidentity字段。字段。 8 8精確小數(shù)型數(shù)據(jù)精確小

15、數(shù)型數(shù)據(jù) Decimal(p,s) Decimal(p,s) 或或 Dec(p,s)Dec(p,s) 該類型數(shù)據(jù)與該類型數(shù)據(jù)與Numeric(p,s)Numeric(p,s)類型用法相同,所不同的是類型用法相同,所不同的是Decimal(p,s)Decimal(p,s)不能用于數(shù)據(jù)表的不能用于數(shù)據(jù)表的identityidentity字段。字段。 4.1.34.1.3字符型數(shù)據(jù)字符型數(shù)據(jù) SQL ServerSQL Server提供了提供了Char(n)Char(n)、VarcharVarchar(n)(n)和和TextText三種三種ASCASC碼字符型數(shù)據(jù)。碼字符型數(shù)據(jù)。1 1定長字符型定長

16、字符型 Char(n)Char(n) 按按n n個字節(jié)的固定長度存放字符串,每個字符占用一個字個字節(jié)的固定長度存放字符串,每個字符占用一個字節(jié),長度范圍節(jié),長度范圍11n8000n8000; 若實際字符串長度小于若實際字符串長度小于n n,則尾部填充空格按,則尾部填充空格按n n個字節(jié)的個字節(jié)的字符串存儲。字符串存儲。2 2變長字符型變長字符型 VarcharVarchar(n)(n) 按不超過按不超過n n個字節(jié)的實際長度存放字符串,可指定最大長個字節(jié)的實際長度存放字符串,可指定最大長度為度為11n8000n8000; 若實際字符串長度小于若實際字符串長度小于n n,則按字串實際長度存儲,不

17、填,則按字串實際長度存儲,不填充空格。充空格。 當存儲的字符串長度不固定時,使用當存儲的字符串長度不固定時,使用VarcharVarchar數(shù)據(jù)類型可數(shù)據(jù)類型可以有效地節(jié)省空間。以有效地節(jié)省空間。 3 3文本類型文本類型 TextText Text Text類型存儲的是可變長度的字符數(shù)據(jù)類型,最大長度類型存儲的是可變長度的字符數(shù)據(jù)類型,最大長度為為2 23131-1-1字節(jié)字節(jié)2GB2GB的數(shù)據(jù)。當存儲超過的數(shù)據(jù)。當存儲超過80008000字節(jié)時,可選擇字節(jié)時,可選擇TextText數(shù)據(jù)類型。數(shù)據(jù)類型。l l 字符型數(shù)據(jù)采用字符型數(shù)據(jù)采用ASCASC碼字符集,英文符號占碼字符集,英文符號占1

18、1個字節(jié),漢個字節(jié),漢字占字占2 2個字節(jié)。個字節(jié)。l l 字符型字符串常量必須使用單引號括起來。字符型字符串常量必須使用單引號括起來。l l CharChar、VarcharVarchar數(shù)據(jù)類型若不指定長度,默認為數(shù)據(jù)類型若不指定長度,默認為1 1字節(jié)。字節(jié)。l l 若實際字符串長度超過指定的若實際字符串長度超過指定的n n個字節(jié),用局部變量存儲個字節(jié),用局部變量存儲時只截取字符串前時只截取字符串前n n個字節(jié),其余字符舍掉。個字節(jié),其余字符舍掉。l l 字符型字符串數(shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)字符型字符串數(shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)表中,但輸入的字符串長度超過字段指定長度

19、時系統(tǒng)不接表中,但輸入的字符串長度超過字段指定長度時系統(tǒng)不接受,也不會自動截取。受,也不會自動截取。l l 在用在用INSERTINSERT或或UPDATEUPDATE為數(shù)據(jù)表字符型字段輸入、更新字為數(shù)據(jù)表字符型字段輸入、更新字符串時,如果超過符串時,如果超過n n字節(jié)則系統(tǒng)提示字節(jié)則系統(tǒng)提示“將截斷字符串或二進將截斷字符串或二進制數(shù)據(jù)制數(shù)據(jù)”并終止命令執(zhí)行,不能保存該數(shù)據(jù)。并終止命令執(zhí)行,不能保存該數(shù)據(jù)。 【例【例4-24-2】字符型字符串】字符型字符串a(chǎn)bcdABCDabcdABCD我們學習我們學習共共1212個字符占個字符占1616字節(jié)。字節(jié)。 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為char(

20、20)char(20)則存儲為:則存儲為: abcdABCDabcdABCD我們學習我們學習 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為varcharvarchar(20)(20)則按實際長度存儲為:則按實際長度存儲為: abcdABCDabcdABCD我們學習我們學習 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為char(10)char(10)或或varcharvarchar(10)(10),則在局,則在局部變量中存儲為:部變量中存儲為: abcdABCDabcdABCD我我 存儲到數(shù)據(jù)表字段中時,系統(tǒng)提示存儲到數(shù)據(jù)表字段中時,系統(tǒng)提示“將截斷字符串或?qū)⒔財嘧址蚨M制數(shù)據(jù)二進制數(shù)據(jù)”不能保存該數(shù)據(jù)。不能保存該

21、數(shù)據(jù)。 4.1.4統(tǒng)一字符型數(shù)據(jù) 統(tǒng)一字符型也稱為寬字符型,采用統(tǒng)一字符型也稱為寬字符型,采用UnicodeUnicode字符集,包字符集,包括了世界上所有語言符號,一個英文符號或一個漢字都括了世界上所有語言符號,一個英文符號或一個漢字都占用占用2 2個字節(jié)的內(nèi)存。前個字節(jié)的內(nèi)存。前127127個字符為個字符為ASCASC碼字符。碼字符。 SQL ServerSQL Server提供了提供了Nchar(n)Nchar(n)、Nvarchar(n)Nvarchar(n)和和NtextNtext三三種統(tǒng)一字符型數(shù)據(jù)。種統(tǒng)一字符型數(shù)據(jù)。1 1定長統(tǒng)一字符型定長統(tǒng)一字符型 NcharNchar(n)(

22、n) 按按n n個字符的固定長度存放字符串,每個字符占用個字符的固定長度存放字符串,每個字符占用2 2個個字節(jié),長度范圍字節(jié),長度范圍11n4000n4000; 若實際字符個數(shù)小于最大長度若實際字符個數(shù)小于最大長度n n,則尾部填充空格按,則尾部填充空格按n n個字符存儲。個字符存儲。2 2變長統(tǒng)一字符型變長統(tǒng)一字符型 NvarcharNvarchar(n)(n) 按不超過按不超過n n個字符的實際長度存放字符串,可指定最大個字符的實際長度存放字符串,可指定最大字符數(shù)為字符數(shù)為11n4000n4000; 若實際字符個數(shù)小于若實際字符個數(shù)小于n n,則按字符串實際長度占用存儲,則按字符串實際長度

23、占用存儲空間,不填充空格??臻g,不填充空格。3 3統(tǒng)一字符文本類型統(tǒng)一字符文本類型 NtextNtext NtextNtext存儲的是可變長度的雙字節(jié)字符數(shù)據(jù)類型,最存儲的是可變長度的雙字節(jié)字符數(shù)據(jù)類型,最多可以存儲(多可以存儲(2 23030-1-1)/2/2個字符。個字符。l l 統(tǒng)一字符型數(shù)據(jù)長度統(tǒng)一字符型數(shù)據(jù)長度n n為為“字符字符”個數(shù),所占字節(jié)數(shù)個數(shù),所占字節(jié)數(shù)為為2 2* *n n。l l 統(tǒng)一字符型字符串常量必須使用單引號括起來。統(tǒng)一字符型字符串常量必須使用單引號括起來。l l NcharNchar、NvarcharNvarchar數(shù)據(jù)類型若不指定長度數(shù)據(jù)類型若不指定長度n n

24、,默認為,默認為1 1個字符(個字符(2 2個字節(jié))。個字節(jié))。l l 若實際字符串長度超過指定的若實際字符串長度超過指定的n n個字符,用局部變量個字符,用局部變量存儲時只截取字符串前存儲時只截取字符串前n n個字符,其余字符舍掉。個字符,其余字符舍掉。l l 統(tǒng)一字符型數(shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)統(tǒng)一字符型數(shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)表中,但輸入的字符個數(shù)超過字段長度時則系統(tǒng)不接受。表中,但輸入的字符個數(shù)超過字段長度時則系統(tǒng)不接受。l l 在用在用INSERTINSERT或或UPDATEUPDATE為數(shù)據(jù)表統(tǒng)一字符型字段輸入、為數(shù)據(jù)表統(tǒng)一字符型字段輸入、更新字符串時,若超過

25、更新字符串時,若超過n n個字符則系統(tǒng)提示個字符則系統(tǒng)提示“將截斷字將截斷字符串或二進制數(shù)據(jù)符串或二進制數(shù)據(jù)”并終止命令執(zhí)行,不能保存該數(shù)據(jù)。并終止命令執(zhí)行,不能保存該數(shù)據(jù)。 【例【例4-34-3】字符串】字符串a(chǎn)bcdABCDabcdABCD我們學習我們學習作為統(tǒng)一字作為統(tǒng)一字符型共符型共1212個字符占個字符占2424字節(jié)。字節(jié)。 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為NcharNchar(14)(14)則存儲為:則存儲為: abcdABCDabcdABCD我們學習我們學習 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為NvarcharNvarchar(14)(14)則按實際字符數(shù)存儲則按實際字符數(shù)存儲為:為

26、: abcdABCDabcdABCD我們學習我們學習 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為Nchar(10)Nchar(10)或或NvarcharNvarchar(10)(10),則在,則在局部變量中存儲為:局部變量中存儲為: abcdABCDabcdABCD我們我們 存儲到數(shù)據(jù)表字段中時,系統(tǒng)提示存儲到數(shù)據(jù)表字段中時,系統(tǒng)提示“將截斷字符串或?qū)⒔財嘧址蚨M制數(shù)據(jù)二進制數(shù)據(jù)”不能保存該數(shù)據(jù)。不能保存該數(shù)據(jù)。4.1.54.1.5日期日期/ /時間型數(shù)據(jù)時間型數(shù)據(jù) SQL ServerSQL Server提供的日期提供的日期/ /時間數(shù)據(jù)類型可存儲日期和時間時間數(shù)據(jù)類型可存儲日期和時間的組合數(shù)據(jù)。

27、以日期的組合數(shù)據(jù)。以日期/ /時間類型存儲日期或時間數(shù)據(jù)比字符時間類型存儲日期或時間數(shù)據(jù)比字符型更簡單,因為型更簡單,因為SQL ServerSQL Server提供了一系列專門處理日期和提供了一系列專門處理日期和時間的函數(shù)來處理這類數(shù)據(jù)。若使用字符型存儲日期和時時間的函數(shù)來處理這類數(shù)據(jù)。若使用字符型存儲日期和時間,計算機不能識別,也不能自動對這些數(shù)據(jù)按照日期和間,計算機不能識別,也不能自動對這些數(shù)據(jù)按照日期和時間進行處理。時間進行處理。 SQL ServerSQL Server提供了提供了SmalldatetimeSmalldatetime和和DatetimeDatetime兩種兩種日期日期

28、/ /時間的數(shù)據(jù)類型。時間的數(shù)據(jù)類型。1 1短日期短日期/ /時間型時間型 SmalldatetimeSmalldatetime 占占4 4個字節(jié)固定長度的內(nèi)存,存放個字節(jié)固定長度的內(nèi)存,存放19001900年年1 1月月1 1日到日到20792079年年6 6月月6 6日的日期時間,可以精確到分。日的日期時間,可以精確到分。 2 2基本日期基本日期/ /時間型時間型 DatetimeDatetime 占占8 8個字節(jié)固定長度的內(nèi)存,存放個字節(jié)固定長度的內(nèi)存,存放17531753年年1 1月月1 1日到日到99999999年年1212月月3131日的日期時間,可以精確到千分之一秒,即日的日期時

29、間,可以精確到千分之一秒,即0.0010.001s s。 注意:注意:l l 日期時間型常量與字符串常量相同必須使用單引號括起來。日期時間型常量與字符串常量相同必須使用單引號括起來。l l SQL ServerSQL Server在用戶沒有指定小時以下精確的時間數(shù)據(jù)時,在用戶沒有指定小時以下精確的時間數(shù)據(jù)時,自動設(shè)置自動設(shè)置DatetimeDatetime或或SmalldatetimeSmalldatetime數(shù)據(jù)的時間為數(shù)據(jù)的時間為00:00:0000:00:00。l l 數(shù)據(jù)庫中默認的日期格式為數(shù)據(jù)庫中默認的日期格式為“年年- -月月- -日日”,輸入時可使用,輸入時可使用年年/ /月月/

30、 /日日或或年年- -月月- -日日,也可以使用,也可以使用月月/ /日日/ /年年、月月- -日日- -年年、日日/ /月月/ /年年或或日日- -月月- -年年。l l 如果使用如果使用日日/ /月月/ /年年或或日日- -月月- -年年,系統(tǒng)不能區(qū)分時,系統(tǒng)不能區(qū)分時默認按默認按“月月- -日日- -年年”處理。處理。4.1.64.1.6貨幣型數(shù)據(jù)貨幣型數(shù)據(jù) SQL ServerSQL Server提供了提供了SmallmoneySmallmoney和和MoneyMoney兩種兩種貨幣型數(shù)據(jù)。貨幣型數(shù)據(jù)。1 1短貨幣型短貨幣型 SmallmoneySmallmoney 該類型占該類型占4

31、 4個字節(jié)固定長度的內(nèi)存,實際是由個字節(jié)固定長度的內(nèi)存,實際是由2 2個個2 2字節(jié)的字節(jié)的整數(shù)構(gòu)成,前整數(shù)構(gòu)成,前2 2個字節(jié)為貨幣值的整數(shù)部分,后個字節(jié)為貨幣值的整數(shù)部分,后2 2個字節(jié)為貨個字節(jié)為貨幣值的小數(shù)部分。貨幣值的范圍從幣值的小數(shù)部分。貨幣值的范圍從-214748.3648-214748.3648到到+214748.3647+214748.3647,可以精確到萬分之一貨幣單位。,可以精確到萬分之一貨幣單位。2 2基本貨幣型基本貨幣型 MoneyMoney 該類型占該類型占8 8個字節(jié)固定長度的內(nèi)存,由個字節(jié)固定長度的內(nèi)存,由2 2個個4 4字節(jié)的整數(shù)構(gòu)字節(jié)的整數(shù)構(gòu)成,前成,前4

32、4個字節(jié)為貨幣值的整數(shù)部分,后個字節(jié)為貨幣值的整數(shù)部分,后4 4個字節(jié)表示貨幣值個字節(jié)表示貨幣值的小數(shù)部分。貨幣值的范圍從的小數(shù)部分。貨幣值的范圍從-2-26363到到2 26363-1-1,可精確到萬分之,可精確到萬分之一貨幣單位。一貨幣單位。 MoneyMoney或或SmallmoneySmallmoney類型的數(shù)值常量,應(yīng)加貨幣符號類型的數(shù)值常量,應(yīng)加貨幣符號$ $前綴,前綴,負數(shù)時加后綴負數(shù)時加后綴$ $。 如:如:$222.222 , -333.333$ $222.222 , -333.333$ 4.1.74.1.7位類型數(shù)據(jù)位類型數(shù)據(jù) bitbit l l 位類型只能存放位類型只能

33、存放0 0、1 1和和NULL(NULL(空值空值) ),一般用于邏輯判斷。,一般用于邏輯判斷。l l 位類型數(shù)據(jù)占位類型數(shù)據(jù)占1 1位二進制內(nèi)存,如果一個數(shù)據(jù)表中有位二進制內(nèi)存,如果一個數(shù)據(jù)表中有8 8個以個以下的位類型字段,系統(tǒng)用一個字節(jié)存儲所有這些字段,超過下的位類型字段,系統(tǒng)用一個字節(jié)存儲所有這些字段,超過8 8個不足個不足1616個用個用2 2個字節(jié)存放。個字節(jié)存放。l l 位類型數(shù)據(jù)輸入任意的非位類型數(shù)據(jù)輸入任意的非0 0值時,都按值時,都按1 1處理。處理。 SQL Server SQL Server 常用數(shù)據(jù)類型見表常用數(shù)據(jù)類型見表4.14.1。4.1.84.1.8其他特殊數(shù)據(jù)

34、類型其他特殊數(shù)據(jù)類型1 1、TimestampTimestamp: 也稱為時間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫范圍內(nèi)的惟一值,也稱為時間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫范圍內(nèi)的惟一值,反應(yīng)數(shù)據(jù)庫中數(shù)據(jù)修改的相對順序,相當于一個單調(diào)上升反應(yīng)數(shù)據(jù)庫中數(shù)據(jù)修改的相對順序,相當于一個單調(diào)上升的計數(shù)器。的計數(shù)器。 2 2、UniqueidentifierUniqueidentifier: 用于存儲用于存儲1616字節(jié)長度的二進制數(shù)據(jù)類型,是字節(jié)長度的二進制數(shù)據(jù)類型,是SQL ServerSQL Server根據(jù)計算機網(wǎng)絡(luò)適配器地址和根據(jù)計算機網(wǎng)絡(luò)適配器地址和CPUCPU時鐘而產(chǎn)生的全局惟一標時鐘而產(chǎn)生的全局惟一標識符代

35、碼(識符代碼(Globally Unique IdentifierGlobally Unique Identifier,簡寫為,簡寫為GUIDGUID)。)。3 3、sqlsql_variant_variant: 用于存儲除文本、圖形數(shù)據(jù)和用于存儲除文本、圖形數(shù)據(jù)和timestamptimestamp類型數(shù)據(jù)外的其類型數(shù)據(jù)外的其它任何合法的它任何合法的SQL ServerSQL Server數(shù)據(jù)。數(shù)據(jù)。4 4、tabletable: 用于存儲對表或者視圖處理后的結(jié)果集。這種新的數(shù)據(jù)用于存儲對表或者視圖處理后的結(jié)果集。這種新的數(shù)據(jù)類型使得用一個變量可以存儲一個表,從而使函數(shù)或過程類型使得用一個變

36、量可以存儲一個表,從而使函數(shù)或過程返回查詢結(jié)果更加方便、快捷。返回查詢結(jié)果更加方便、快捷。4.1.94.1.9圖像、文本型數(shù)據(jù)的存儲方式圖像、文本型數(shù)據(jù)的存儲方式 存儲文本、圖像等大型數(shù)據(jù)時,可使用存儲文本、圖像等大型數(shù)據(jù)時,可使用TextText、NtextNtext和和ImageImage三種數(shù)據(jù)類型,這三種數(shù)據(jù)類型的數(shù)據(jù)量往往比較大,三種數(shù)據(jù)類型,這三種數(shù)據(jù)類型的數(shù)據(jù)量往往比較大,在在SQL Server 7.0SQL Server 7.0以前的版本中,文本和圖像數(shù)據(jù)被存儲以前的版本中,文本和圖像數(shù)據(jù)被存儲在專門的頁中,在數(shù)據(jù)行的相應(yīng)位置只保存指向這些數(shù)據(jù)在專門的頁中,在數(shù)據(jù)行的相應(yīng)位置

37、只保存指向這些數(shù)據(jù)的指針。的指針。 SQL Server 2000SQL Server 2000提供了將小型文本或圖像數(shù)據(jù)直接在行提供了將小型文本或圖像數(shù)據(jù)直接在行中存儲的功能,不需要到另外的頁中訪問這些數(shù)據(jù),使得中存儲的功能,不需要到另外的頁中訪問這些數(shù)據(jù),使得讀寫文本和圖像數(shù)據(jù)可以與讀寫普通字符串一樣快。讀寫文本和圖像數(shù)據(jù)可以與讀寫普通字符串一樣快。 使用系統(tǒng)存儲過程使用系統(tǒng)存儲過程sp_tableoptionsp_tableoption可以指定文本或圖像可以指定文本或圖像數(shù)據(jù)是否在表的行中存儲。數(shù)據(jù)是否在表的行中存儲。 語法格式:語法格式: sp_tableoptionsp_tableo

38、ption 表名表名,text in row,TRUE|FALSEtext in row,TRUE|FALSE4.1.94.1.9圖像、文本型數(shù)據(jù)的存儲方式圖像、文本型數(shù)據(jù)的存儲方式說明:說明:l l 當指定當指定“TRUE”TRUE”選項時,允許小型文本或圖像數(shù)據(jù)直接選項時,允許小型文本或圖像數(shù)據(jù)直接在該表的行中存儲,而且還可以指定文本或圖像數(shù)據(jù)大小在該表的行中存儲,而且還可以指定文本或圖像數(shù)據(jù)大小的上限值(的上限值(24-700024-7000字節(jié)),默認上限字節(jié)),默認上限256256字節(jié)。字節(jié)。l l 當數(shù)據(jù)的大小不超過上限值而且同時數(shù)據(jù)行有足夠空間當數(shù)據(jù)的大小不超過上限值而且同時數(shù)據(jù)

39、行有足夠空間時,文本和圖像數(shù)據(jù)就會直接存儲在行中。時,文本和圖像數(shù)據(jù)就會直接存儲在行中。l l 若以上兩個條件有一個不滿足時,行中仍只存放指向數(shù)若以上兩個條件有一個不滿足時,行中仍只存放指向數(shù)據(jù)存儲位置的指針。據(jù)存儲位置的指針?!纠纠?-44-4】在當前數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表】在當前數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表exampleexample,字段,字段bin_1bin_1存放存放TEXTTEXT類類型數(shù)據(jù),型數(shù)據(jù),bin_2bin_2存放存放NTEXTNTEXT類型數(shù)據(jù),類型數(shù)據(jù),bin_3bin_3存放存放ImageImage類型數(shù)據(jù)。類型數(shù)據(jù)。CREATE TABLE example(bin_1 tex

40、t,bin_2 ntext,bin_3 ntextCREATE TABLE example(bin_1 text,bin_2 ntext,bin_3 ntext Image) Image)GoGo / /* * 以下語句指定不大于以下語句指定不大于10001000字節(jié)的文本或圖像數(shù)據(jù)在行中存儲字節(jié)的文本或圖像數(shù)據(jù)在行中存儲 * */ /sp_tableoptionsp_tableoption example, text in row, TRUE example, text in row, TRUEsp_tableoptionsp_tableoption example ,text in row

41、, 1000 example ,text in row, 1000 / /* * 以下語句指定以下語句指定MytableMytable表不在行中存儲文本和圖像數(shù)據(jù)表不在行中存儲文本和圖像數(shù)據(jù) * */ /sp_tableoption Mytablesp_tableoption Mytable , text in row, FALSE , text in row, FALSE4.1.104.1.10、局部變量的定義與輸出、局部變量的定義與輸出 本書在第本書在第7 7、8 8章將專門詳細介紹章將專門詳細介紹T-SQLT-SQL的程序設(shè)計、批的程序設(shè)計、批處理、局部變量、自定義類型和函數(shù)、游標、存儲

42、過程處理、局部變量、自定義類型和函數(shù)、游標、存儲過程與觸發(fā)器,但在前幾章也許會用到批處理及局部變量的與觸發(fā)器,但在前幾章也許會用到批處理及局部變量的概念,為此我們先簡單介紹一下有關(guān)的知識。概念,為此我們先簡單介紹一下有關(guān)的知識。1 1、批處理、批處理 批處理是一個或多個批處理是一個或多個SQLSQL語句的集合,構(gòu)成一個獨立的語句的集合,構(gòu)成一個獨立的程序模塊,以程序模塊,以GOGO語句為結(jié)束標志。從程序開頭或從某一語句為結(jié)束標志。從程序開頭或從某一個個GOGO語句開始到下一個語句開始到下一個GOGO語句或程序結(jié)束為一個批處理。語句或程序結(jié)束為一個批處理。2 2、局部變量、局部變量 局部變量是用

43、戶自定義的變量,用于臨時存儲各種類局部變量是用戶自定義的變量,用于臨時存儲各種類型的數(shù)據(jù)。型的數(shù)據(jù)。3 3、定義局部變量、定義局部變量 語法格式:語法格式: DECLARE DECLARE 變量名變量名 數(shù)據(jù)類型數(shù)據(jù)類型(長度長度) ) ,n n 例如:例如:DECLARE x intDECLARE x int , s decimal(8.4) , s decimal(8.4) 注意:注意:l l 局部變量必須以局部變量必須以 開頭以區(qū)別字段名變量。固定長度的類開頭以區(qū)別字段名變量。固定長度的類型不需要指定長度。型不需要指定長度。l l 局部變量只在一個批處理內(nèi)有效,其生命周期從定義開始局部變

44、量只在一個批處理內(nèi)有效,其生命周期從定義開始到它遇到的第一個到它遇到的第一個GOGO語句或者到程序結(jié)束。語句或者到程序結(jié)束。4 4、局部變量的賦值、局部變量的賦值 語法格式:語法格式: SET SET 局部變量局部變量= =表達式表達式5 5、顯示輸出局部變量、顯示輸出局部變量 語法格式:語法格式: PRINT PRINT 局部變量或表達式局部變量或表達式4.2 4.2 運算符與表達式運算符與表達式 4.2.14.2.1、算術(shù)運算符與表達式、算術(shù)運算符與表達式 算術(shù)運算符:算術(shù)運算符: +(+(加加) )、-(-(減減) )、* *( (乘乘) )、/(/(除除) )、%(%(取模求余取模求余

45、) )。4.2.24.2.2、邏輯類運算符與邏輯值表達式、邏輯類運算符與邏輯值表達式 SQLSQL邏輯值表達式都是作為判斷條件使用的,取值為:邏輯值表達式都是作為判斷條件使用的,取值為:l l TRUETRUE: 真,條件成立真,條件成立l l FALSEFALSE: 假,條件不成立假,條件不成立l l UNKNOWNUNKNOWN:不確定,是某個數(shù)據(jù)與:不確定,是某個數(shù)據(jù)與NULLNULL比較的結(jié)果比較的結(jié)果 在數(shù)據(jù)庫中,在數(shù)據(jù)庫中,NULLNULL是一個不知道或不能確定的專用數(shù)據(jù)是一個不知道或不能確定的專用數(shù)據(jù)值,它不等于數(shù)值值,它不等于數(shù)值0 0和字符的空格。某個數(shù)據(jù)與和字符的空格。某個

46、數(shù)據(jù)與NULLNULL進行進行比較運算的邏輯值就是比較運算的邏輯值就是UNKNOWNUNKNOWN,因為大家對使用,因為大家對使用UNKNOWNUNKNOWN都不習慣,所以大多數(shù)都不習慣,所以大多數(shù)SQLSQL版本都提供了專門的空值運算版本都提供了專門的空值運算符符“IS NULL”IS NULL”,用于判斷是否是空值,用于判斷是否是空值NULLNULL。 例如:假設(shè)例如:假設(shè)“職稱職稱”的內(nèi)容為的內(nèi)容為NULLNULL,若有條件表達式:,若有條件表達式: 職稱職稱= =講師講師 則該表達式的值不是則該表達式的值不是truetrue或或falsefalse而是而是unknownunknown。

47、 SQL Server 2000SQL Server 2000提供了由提供了由7 7類運算符組成的邏輯值條件類運算符組成的邏輯值條件表達式。表達式。1 1、比較運算符、比較運算符 ( (大于大于) )、=(=(大于等于大于等于) )、 ( (小于小于) )、= (= (小于等于小于等于) ) =( =(等于等于) )、或或!=(!=(不等于不等于) )、!(!(不大于不大于) )、!(! 500 500 則單價大于則單價大于500500條件為條件為TRUETRUE,單價不大于,單價不大于500500條件為條件為FALSEFALSE 銷售單價銷售單價- -進價進價=銷售單價銷售單價/2 /2 則

48、毛利潤大于等于一半時條件為真則毛利潤大于等于一半時條件為真2 2、邏輯運算符、邏輯運算符 not ( not (邏輯非邏輯非) )、 and (and (邏輯與邏輯與) )、 or (or (邏輯或邏輯或) ) 邏輯條件表達式:邏輯條件表達式: not not 邏輯值表達式邏輯值表達式 邏輯值表達式邏輯值表達式1 and 1 and 邏輯值表達式邏輯值表達式2 2 邏輯值表達式邏輯值表達式1 or 1 or 邏輯值表達式邏輯值表達式2 2 如:如:notnot單價單價 500 500 則單價不大于則單價不大于500500條件為真,等價條件為真,等價于:單價于:單價 = 500=1000=100

49、0 則只有孫立華收到的商品中進價大于等于則只有孫立華收到的商品中進價大于等于10001000時條件才時條件才為真為真 如:單價如:單價=500 or =500 or 單價單價=1000 =1000 則單價等于則單價等于500500或者等于或者等于10001000,只要滿足一個條件就為真,只要滿足一個條件就為真2 2、邏輯運算符、邏輯運算符 在邏輯運算中,邏輯值在邏輯運算中,邏輯值UNKNOWN(UNKNOWN(不確定不確定) )可以看成是介于真假之間的可以看成是介于真假之間的中立值,既不是真也不是假,不真不假就是不確定。中立值,既不是真也不是假,不真不假就是不確定。 如果把如果把TRUE UN

50、KNOWN FALSETRUE UNKNOWN FALSE這三者的關(guān)系理解為由高級這三者的關(guān)系理解為由高級低低級,就比較好理解三者的邏輯運算結(jié)果了。級,就比較好理解三者的邏輯運算結(jié)果了。ANDAND運算:結(jié)果取低級的運算:結(jié)果取低級的 TRUE AND UNKOWN TRUE AND UNKOWN 結(jié)果結(jié)果UNKOWNUNKOWN UNKOWN AND UNKOWN UNKOWN AND UNKOWN 結(jié)果結(jié)果UNKOWNUNKOWN FALSE AND UNKOWN FALSE AND UNKOWN 結(jié)果結(jié)果FALSEFALSEOROR運算:結(jié)果取高級的運算:結(jié)果取高級的 TRUE OR U

51、NKOWN TRUE OR UNKOWN 結(jié)果結(jié)果TRUETRUE UNKOWN UNKOWN OR UNKOWN OR UNKOWN 結(jié)果結(jié)果UNKOWNUNKOWN FALSE OR UNKOWN FALSE OR UNKOWN 結(jié)果結(jié)果UNKOWNUNKOWNNOTNOT運算:結(jié)果取相反的運算:結(jié)果取相反的 NOT TRUE NOT TRUE 結(jié)果結(jié)果FALSE FALSE NOT UNKOWN NOT UNKOWN 結(jié)果結(jié)果UNKOWNUNKOWN NOT FALSE NOT FALSE 結(jié)果結(jié)果TRUETRUE3 3、范圍運算符、范圍運算符 not between not betwe

52、en and and 條件表達式:表達式條件表達式:表達式 not between not between 起始值起始值 and and 終止值終止值 between between and and用于判斷表達式的值是否在某個范圍內(nèi),若在用于判斷表達式的值是否在某個范圍內(nèi),若在指定范圍內(nèi)條件為真,不在指定范圍內(nèi)條件為假。等價于:指定范圍內(nèi)條件為真,不在指定范圍內(nèi)條件為假。等價于: 表達式表達式=起始值起始值 and and 表達式表達式=終止值終止值 即:起始值即:起始值=表達式表達式=終止值終止值 not between not between and and判斷表達式的值是否不在某個范圍內(nèi)

53、,若不判斷表達式的值是否不在某個范圍內(nèi),若不在指定范圍內(nèi)條件為真,否則為假。等價于:在指定范圍內(nèi)條件為真,否則為假。等價于: 表達式表達式 終止值終止值 即:表達式小于起始值或大于終止值條件為真即:表達式小于起始值或大于終止值條件為真 如:如:X between 5 and 10 X between 5 and 10 則則X=5X=5且且X=10X=10條件為真,條件為真,X5X10X10為假。為假。 X not between 5 and 10 X not between 5 and 10 則則X5X10X10條件為真,條件為真,X=5X=5且且X=10X=10為假。為假。 注意:注意:be

54、tweenbetween所選取的數(shù)據(jù)范圍包括邊界值,所選取的數(shù)據(jù)范圍包括邊界值,not betweennot between則不則不包括邊界值,包括邊界值,notnot實際上就是邏輯非運算符。實際上就是邏輯非運算符。 4 4、多值列表運算符、多值列表運算符 not not in ( in ( ) ) 條件表達式:條件表達式: not not 表達式表達式 in ( in ( 值值1, 1, 值值2, 2, , , 值值n )n ) in ( in ( ) )用于判斷表達式的值是否等于所給出的值之用于判斷表達式的值是否等于所給出的值之一,只要與其中任何一個值相等條件就為真,全部都不一,只要與其中

55、任何一個值相等條件就為真,全部都不相等為假。相等為假。 Not Not in ( in ( ) )表示判斷表達式的值是否全部不等表示判斷表達式的值是否全部不等于所給出的值,所有的值一個也不相等條件為真,只要于所給出的值,所有的值一個也不相等條件為真,只要有一個相等為假。有一個相等為假。 如:如:X in (1X in (1,3 3,5) 5) 則相當于邏輯表達式:則相當于邏輯表達式:X=1 or X=3 or X=5X=1 or X=3 or X=5。 如:如:not X in (1not X in (1,3 3,5) 5) 則相當于邏輯表達式:則相當于邏輯表達式:X1 and X3 and

56、X5X1 and X3 and X5。 5 5、用于子查詢的運算符、用于子查詢的運算符(1)列表比較運算符)列表比較運算符 ANY | ALL 列表運算符列表運算符ANY與包含運算符與包含運算符in功能大致相同,但功能大致相同,但IN可以獨立使用,可以獨立使用,而而ANY必須與比較運算符配合使用;必須與比較運算符配合使用;in只是比較相等(包含),只是比較相等(包含),ANY可可進行任何比較。進行任何比較。 列表比較的條件表達式格式:列表比較的條件表達式格式: 表達式表達式 比較運算符比較運算符 ANY (子查詢的一列值子查詢的一列值) 表達式表達式 比較運算符比較運算符 ALL (子查詢的一

57、列值子查詢的一列值)該條件將表達式與子查詢返回的一整列值按給定的比較運算符逐一比較:該條件將表達式與子查詢返回的一整列值按給定的比較運算符逐一比較: 只要有一個比較成立:只要有一個比較成立: ANY的結(jié)果為真的結(jié)果為真(相當于或運算相當于或運算)。 只有全部比較都成立:只有全部比較都成立: ALL的結(jié)果為真的結(jié)果為真(相當于與運算相當于與運算)。 在在SQL-92標準中還可使用標準中還可使用SOME運算符,運算符,SOME運算符與運算符與ANY 等效。等效。(2)記錄存在邏輯運算符)記錄存在邏輯運算符 not exists 邏輯運算符邏輯運算符not exists可以檢查子查詢返回的結(jié)果集中是

58、否包含有記可以檢查子查詢返回的結(jié)果集中是否包含有記錄。若子查詢結(jié)果集中包含記錄,則錄。若子查詢結(jié)果集中包含記錄,則exists為真,否則為假。為真,否則為假。 ANY | ALL與與not exists的詳細用法見第的詳細用法見第5章子查詢。章子查詢。6 6、空值運算符、空值運算符 not is nullnot is null 條件表達式:表達式條件表達式:表達式 not is nullnot is null is null is null表示判斷表達式的值是否等于空值,如果是空表示判斷表達式的值是否等于空值,如果是空值值NULLNULL則條件為真,否則為假。則條件為真,否則為假。 not i

59、s nullnot is null表示判斷表達式的值是否不等于空值,如表示判斷表達式的值是否不等于空值,如果表達式的值不是空值果表達式的值不是空值NULLNULL則條件為真。則條件為真。 例如:假設(shè)例如:假設(shè)“職稱職稱”的內(nèi)容為的內(nèi)容為NULLNULL,則:,則: ( 職稱職稱= =講師講師 )= = UNKNOWNUNKNOWN 或:或:“ “ 職稱職稱 IS NULL ”IS NULL ”的值為真。的值為真。 7 7、字符模糊匹配運算符、字符模糊匹配運算符 not like not like 條件表達式:字符串表達式條件表達式:字符串表達式 not like not like 通配符通配符

60、 其中通配符可以使用:其中通配符可以使用:(1 1)%:代表:代表0 0個或多個字符的任意字符串個或多個字符的任意字符串 如:字符串表達式如:字符串表達式 like A% like A% 則不論字符串有多少個字符,只要第一個字符(開頭)則不論字符串有多少個字符,只要第一個字符(開頭)是是“A”A”,條件為真。,條件為真。 如:字符串表達式如:字符串表達式 like %AB like %AB 則不論字符串多少個字符,只要最后兩個字符(末尾)則不論字符串多少個字符,只要最后兩個字符(末尾)是是“AB”AB”,條件為真。,條件為真。 如:字符串表達式如:字符串表達式 like %ABC%like %

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論