![第4章數(shù)據(jù)表的創(chuàng)建與操作_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/4cb62f19-969a-4109-be74-4bf10b8baba9/4cb62f19-969a-4109-be74-4bf10b8baba91.gif)
![第4章數(shù)據(jù)表的創(chuàng)建與操作_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/4cb62f19-969a-4109-be74-4bf10b8baba9/4cb62f19-969a-4109-be74-4bf10b8baba92.gif)
![第4章數(shù)據(jù)表的創(chuàng)建與操作_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/4cb62f19-969a-4109-be74-4bf10b8baba9/4cb62f19-969a-4109-be74-4bf10b8baba93.gif)
![第4章數(shù)據(jù)表的創(chuàng)建與操作_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/4cb62f19-969a-4109-be74-4bf10b8baba9/4cb62f19-969a-4109-be74-4bf10b8baba94.gif)
![第4章數(shù)據(jù)表的創(chuàng)建與操作_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/4cb62f19-969a-4109-be74-4bf10b8baba9/4cb62f19-969a-4109-be74-4bf10b8baba95.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第4章章 數(shù)據(jù)表的創(chuàng)建與操作數(shù)據(jù)表的創(chuàng)建與操作 4.1 數(shù)據(jù)類型數(shù)據(jù)類型 4.2 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式 4.3 系統(tǒng)內(nèi)置函數(shù)系統(tǒng)內(nèi)置函數(shù) 4.4 用企業(yè)管理器創(chuàng)建數(shù)據(jù)表及約束對(duì)象用企業(yè)管理器創(chuàng)建數(shù)據(jù)表及約束對(duì)象 4.5 用用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)表及約束對(duì)象語(yǔ)句創(chuàng)建數(shù)據(jù)表及約束對(duì)象 4.6 查看表信息、輸入數(shù)據(jù)、編輯和刪除記錄查看表信息、輸入數(shù)據(jù)、編輯和刪除記錄 4.7 數(shù)據(jù)表及約束對(duì)象的刪除數(shù)據(jù)表及約束對(duì)象的刪除 4.8 數(shù)據(jù)庫(kù)應(yīng)用實(shí)例數(shù)據(jù)庫(kù)應(yīng)用實(shí)例電腦器材銷售管理電腦器材銷售管理的數(shù)據(jù)表的數(shù)據(jù)表 4.9 實(shí)訓(xùn)要求與習(xí)題實(shí)訓(xùn)要求與習(xí)題 第第4章章 數(shù)據(jù)表的創(chuàng)建與操作數(shù)據(jù)表的創(chuàng)建與操
2、作 學(xué)習(xí)目的與要求 數(shù)據(jù)表是數(shù)據(jù)庫(kù)中最重要的對(duì)象,數(shù)據(jù)庫(kù)的全部數(shù)據(jù)數(shù)據(jù)表是數(shù)據(jù)庫(kù)中最重要的對(duì)象,數(shù)據(jù)庫(kù)的全部數(shù)據(jù)都存儲(chǔ)在不同的數(shù)據(jù)表中,因而數(shù)據(jù)表的設(shè)計(jì)成功與都存儲(chǔ)在不同的數(shù)據(jù)表中,因而數(shù)據(jù)表的設(shè)計(jì)成功與否是數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵,將直接影響到數(shù)據(jù)庫(kù)使用的否是數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵,將直接影響到數(shù)據(jù)庫(kù)使用的合理有效。合理有效。了解了解SQL Server數(shù)據(jù)庫(kù)系統(tǒng),掌握數(shù)據(jù)表數(shù)據(jù)庫(kù)系統(tǒng),掌握數(shù)據(jù)表的數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、常用系統(tǒng)函數(shù)是創(chuàng)建的數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、常用系統(tǒng)函數(shù)是創(chuàng)建數(shù)據(jù)庫(kù)必備的基礎(chǔ)知識(shí)。數(shù)據(jù)表及約束對(duì)象的創(chuàng)建以數(shù)據(jù)庫(kù)必備的基礎(chǔ)知識(shí)。數(shù)據(jù)表及約束對(duì)象的創(chuàng)建以及數(shù)據(jù)的輸入更新是創(chuàng)建數(shù)據(jù)庫(kù)
3、的重要環(huán)節(jié)。通過(guò)本及數(shù)據(jù)的輸入更新是創(chuàng)建數(shù)據(jù)庫(kù)的重要環(huán)節(jié)。通過(guò)本章學(xué)習(xí),讀者應(yīng)熟悉并掌握章學(xué)習(xí),讀者應(yīng)熟悉并掌握SQL Server數(shù)據(jù)庫(kù)的數(shù)據(jù)數(shù)據(jù)庫(kù)的數(shù)據(jù)類型、表達(dá)式和常用內(nèi)置函數(shù),掌握數(shù)據(jù)表及約束對(duì)類型、表達(dá)式和常用內(nèi)置函數(shù),掌握數(shù)據(jù)表及約束對(duì)象的創(chuàng)建、修改、刪除以及數(shù)據(jù)的輸入、更新、刪除象的創(chuàng)建、修改、刪除以及數(shù)據(jù)的輸入、更新、刪除等操作,獨(dú)立創(chuàng)建等操作,獨(dú)立創(chuàng)建電腦器材銷售管理電腦器材銷售管理diannaoxs數(shù)數(shù)據(jù)庫(kù)的各個(gè)數(shù)據(jù)表。據(jù)庫(kù)的各個(gè)數(shù)據(jù)表。 4.1 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型決定了數(shù)據(jù)的存儲(chǔ)格式、長(zhǎng)度、精度等屬性。數(shù)據(jù)類型決定了數(shù)據(jù)的存儲(chǔ)格式、長(zhǎng)度、精度等屬性。SQL Ser
4、ver為我們提供了多達(dá)為我們提供了多達(dá)26種的豐富數(shù)據(jù)類型,用戶還可以自種的豐富數(shù)據(jù)類型,用戶還可以自己定義數(shù)據(jù)類型(見(jiàn)第己定義數(shù)據(jù)類型(見(jiàn)第7章)。章)。 4.1.1、二進(jìn)制數(shù)據(jù)、二進(jìn)制數(shù)據(jù) SQL Server用用binary、varbinary 和和image三種數(shù)據(jù)類型來(lái)存三種數(shù)據(jù)類型來(lái)存儲(chǔ)二進(jìn)制數(shù)據(jù)。二進(jìn)制類型可用于存儲(chǔ)聲音圖像等數(shù)字類型的儲(chǔ)二進(jìn)制數(shù)據(jù)。二進(jìn)制類型可用于存儲(chǔ)聲音圖像等數(shù)字類型的數(shù)據(jù)。數(shù)據(jù)。1、定長(zhǎng)二進(jìn)制、定長(zhǎng)二進(jìn)制 binary(n) 按按n個(gè)字節(jié)的固定長(zhǎng)度存放二進(jìn)制數(shù)據(jù),最大長(zhǎng)度為個(gè)字節(jié)的固定長(zhǎng)度存放二進(jìn)制數(shù)據(jù),最大長(zhǎng)度為8K字節(jié),字節(jié),即即1n8000。 若實(shí)際數(shù)
5、據(jù)不足若實(shí)際數(shù)據(jù)不足n個(gè)字節(jié),則在數(shù)據(jù)尾部加個(gè)字節(jié),則在數(shù)據(jù)尾部加0補(bǔ)足補(bǔ)足n個(gè)字節(jié)。個(gè)字節(jié)。2、變長(zhǎng)二進(jìn)制、變長(zhǎng)二進(jìn)制 varbinary(n) 按不超過(guò)按不超過(guò)n個(gè)字節(jié)的實(shí)際長(zhǎng)度存放二進(jìn)制數(shù)據(jù),最大長(zhǎng)度個(gè)字節(jié)的實(shí)際長(zhǎng)度存放二進(jìn)制數(shù)據(jù),最大長(zhǎng)度8K字節(jié),即字節(jié),即1n8000。 若實(shí)際數(shù)據(jù)不足若實(shí)際數(shù)據(jù)不足n個(gè)字節(jié),按實(shí)際長(zhǎng)度存儲(chǔ)數(shù)據(jù),不補(bǔ)充加個(gè)字節(jié),按實(shí)際長(zhǎng)度存儲(chǔ)數(shù)據(jù),不補(bǔ)充加0; 3、圖像二進(jìn)制、圖像二進(jìn)制 Image 圖像二進(jìn)制可存儲(chǔ)不超過(guò)圖像二進(jìn)制可存儲(chǔ)不超過(guò)231-1個(gè)字節(jié)的二進(jìn)制數(shù)據(jù),個(gè)字節(jié)的二進(jìn)制數(shù)據(jù),比 如 文 本 文 檔 、比 如 文 本 文 檔 、 E x c e l 圖
6、 表 以 及 圖 像 數(shù) 據(jù) ( 包圖 表 以 及 圖 像 數(shù) 據(jù) ( 包括括.GIF、.BMP、.JPEG文件)等。文件)等。 注意:注意:l l 二進(jìn)制數(shù)據(jù)常量不允許加引號(hào),默認(rèn)用十進(jìn)制書寫,二進(jìn)制數(shù)據(jù)常量不允許加引號(hào),默認(rèn)用十進(jìn)制書寫,如如1234、1011均視為十進(jìn)制常量,如果使用十六進(jìn)制則均視為十進(jìn)制常量,如果使用十六進(jìn)制則必須加必須加0 x前綴。輸出顯示默認(rèn)采用十六進(jìn)制。前綴。輸出顯示默認(rèn)采用十六進(jìn)制。l l 若實(shí)際數(shù)據(jù)二進(jìn)制長(zhǎng)度超過(guò)指定的若實(shí)際數(shù)據(jù)二進(jìn)制長(zhǎng)度超過(guò)指定的n個(gè)字節(jié),用局部變個(gè)字節(jié),用局部變量存儲(chǔ)時(shí)只截取二進(jìn)制的前量存儲(chǔ)時(shí)只截取二進(jìn)制的前n個(gè)字節(jié),其余二進(jìn)制位舍掉。個(gè)字
7、節(jié),其余二進(jìn)制位舍掉。l l 數(shù)據(jù)庫(kù)中二進(jìn)制字段的數(shù)據(jù)不能在數(shù)據(jù)表中直接輸入,數(shù)據(jù)庫(kù)中二進(jìn)制字段的數(shù)據(jù)不能在數(shù)據(jù)表中直接輸入,即即“無(wú)法編輯該單元無(wú)法編輯該單元”。l l 在用在用INSERT或或UPDATE為數(shù)據(jù)表二進(jìn)制字段輸入、更為數(shù)據(jù)表二進(jìn)制字段輸入、更新數(shù)據(jù)時(shí),如果超過(guò)新數(shù)據(jù)時(shí),如果超過(guò)n字節(jié),則系統(tǒng)提示字節(jié),則系統(tǒng)提示“將截?cái)嘧址畬⒔財(cái)嘧址蚨M(jìn)制數(shù)據(jù)或二進(jìn)制數(shù)據(jù)”并終止命令執(zhí)行,不能保存該數(shù)據(jù)。并終止命令執(zhí)行,不能保存該數(shù)據(jù)。 【例【例4-1】二進(jìn)制數(shù)據(jù)】二進(jìn)制數(shù)據(jù)1aa2bb3cc4共共40位位5個(gè)字節(jié),可個(gè)字節(jié),可表示為表示為0 x1aa2bb3cc4 若定義數(shù)據(jù)類型為若定
8、義數(shù)據(jù)類型為binary(6)則數(shù)據(jù)后加則數(shù)據(jù)后加0按按6字節(jié)存儲(chǔ)字節(jié)存儲(chǔ)為:為:0 x1aa2bb3cc400 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為varbinary(6)則按實(shí)際數(shù)據(jù)存儲(chǔ)為:則按實(shí)際數(shù)據(jù)存儲(chǔ)為:0 x1aa2bb3cc4 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為binary(4)或或varbinary(4),則在局部,則在局部變量中存儲(chǔ)為:變量中存儲(chǔ)為:0 x1aa2bb3c。 存儲(chǔ)到數(shù)據(jù)表字段中時(shí),系統(tǒng)提示存儲(chǔ)到數(shù)據(jù)表字段中時(shí),系統(tǒng)提示“將截?cái)嘧址驅(qū)⒔財(cái)嘧址蚨M(jìn)制數(shù)據(jù)二進(jìn)制數(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種,實(shí)型種,實(shí)型4 4種。種。1 1字節(jié)型整數(shù)字節(jié)型整數(shù) TinyIntTinyInt 占占1 1個(gè)字節(jié)固定長(zhǎng)度內(nèi)存,可存儲(chǔ)個(gè)字節(jié)固定長(zhǎng)度內(nèi)存,可存儲(chǔ)0-2550-255范圍內(nèi)的任意無(wú)范圍內(nèi)的任意無(wú)符號(hào)整數(shù)。符號(hào)整數(shù)。2 2短整型整數(shù)短整型整數(shù) smallIntsmallInt 占占2 2字節(jié)固定長(zhǎng)度內(nèi)存,最高位為符號(hào)位,可存儲(chǔ)字節(jié)固定長(zhǎng)度內(nèi)存,最高位為符號(hào)位,可存儲(chǔ)- -32768327673276832767(-2-21515221515-1-1)的任意整數(shù)。)的任意整數(shù)。3 3基本整型整數(shù)基本整型整數(shù) Int Int
10、 或或IntegerInteger 占占4 4字節(jié)固定長(zhǎng)度內(nèi)存,高位為符號(hào)位,可存儲(chǔ)字節(jié)固定長(zhǎng)度內(nèi)存,高位為符號(hào)位,可存儲(chǔ)- -2147483648-21474836472147483648-2147483647(-2-23131-2-23131-1-1)范圍內(nèi)的任意整數(shù)。)范圍內(nèi)的任意整數(shù)。4 4長(zhǎng)整型整數(shù)長(zhǎng)整型整數(shù) BigintBigint 占占8 8字節(jié)固定長(zhǎng)度內(nèi)存,高位為符號(hào)位,可存儲(chǔ)字節(jié)固定長(zhǎng)度內(nèi)存,高位為符號(hào)位,可存儲(chǔ)-2-26363到到2 26363-1-1范圍內(nèi)的任意整據(jù)。范圍內(nèi)的任意整據(jù)。 注意:整型數(shù)據(jù)可以在較少字節(jié)里存儲(chǔ)精確的整型數(shù)字,注意:整型數(shù)據(jù)可以在較少字節(jié)里存儲(chǔ)精
11、確的整型數(shù)字,存儲(chǔ)效率高,不可能出現(xiàn)小數(shù)的數(shù)據(jù)應(yīng)盡量選用整數(shù)類型。存儲(chǔ)效率高,不可能出現(xiàn)小數(shù)的數(shù)據(jù)應(yīng)盡量選用整數(shù)類型。 5 5近似值實(shí)型浮點(diǎn)數(shù)近似值實(shí)型浮點(diǎn)數(shù) realreal 占占4 4字節(jié)固定長(zhǎng)度內(nèi)存,最多字節(jié)固定長(zhǎng)度內(nèi)存,最多7 7位有效數(shù)字,范圍從位有效數(shù)字,范圍從- -3.40E+383.40E+38到到1.791.79E+38E+38。6 6可變精度實(shí)型浮點(diǎn)數(shù)可變精度實(shí)型浮點(diǎn)數(shù) float(n)float(n)l l 當(dāng)當(dāng)n n的取值為的取值為1-241-24時(shí),數(shù)據(jù)精度是時(shí),數(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 當(dāng)當(dāng)n n的取值為的取值為25-5325-53時(shí),精度是時(shí),精度是1515位有效數(shù)字,范圍從位有效數(shù)字,范圍從- -1.79E+3081.79E+308到到1.79E+3081.79E+308,占,占8 8字節(jié)內(nèi)存。字節(jié)內(nèi)存。l l 實(shí)型浮點(diǎn)數(shù)常量可以直接使用科學(xué)記數(shù)法的指數(shù)形式實(shí)型浮點(diǎn)數(shù)常量可以直接使用科學(xué)記數(shù)法的指數(shù)形式書寫。書寫。7 7精確小數(shù)型數(shù)據(jù)精確小數(shù)型數(shù)據(jù) Numeric(p,s)Numeric(p,s)l l p p指定總位數(shù)(不含小數(shù)點(diǎn)),指定總位數(shù)(不含小數(shù)點(diǎn)),p p的取值范圍的取值范圍1p381p38。即。即最
13、多可達(dá)最多可達(dá)3838位有效數(shù)字,不使用指數(shù)的科學(xué)記數(shù)法表示,但位有效數(shù)字,不使用指數(shù)的科學(xué)記數(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)鍵字(自動(dòng)增關(guān)鍵字(自動(dòng)增長(zhǎng)字段)。長(zhǎng)字段)。l l numericnumeric型數(shù)據(jù)所占的存儲(chǔ)空間隨精度的不同而不同,一型數(shù)據(jù)所占的存儲(chǔ)空間隨精度的不同而不同,一般說(shuō)來(lái)對(duì)應(yīng)關(guān)系為般說(shuō)來(lái)對(duì)應(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定長(zhǎng)字符型定長(zhǎng)
16、字符型 Char(n)Char(n) 按按n n個(gè)字節(jié)的固定長(zhǎng)度存放字符串,每個(gè)字符占用一個(gè)字個(gè)字節(jié)的固定長(zhǎng)度存放字符串,每個(gè)字符占用一個(gè)字節(jié),長(zhǎng)度范圍節(jié),長(zhǎng)度范圍11n8000n8000; 若實(shí)際字符串長(zhǎng)度小于若實(shí)際字符串長(zhǎng)度小于n n,則尾部填充空格按,則尾部填充空格按n n個(gè)字節(jié)的個(gè)字節(jié)的字符串存儲(chǔ)。字符串存儲(chǔ)。2 2變長(zhǎng)字符型變長(zhǎng)字符型 VarcharVarchar(n)(n) 按不超過(guò)按不超過(guò)n n個(gè)字節(jié)的實(shí)際長(zhǎng)度存放字符串,可指定最大長(zhǎng)個(gè)字節(jié)的實(shí)際長(zhǎng)度存放字符串,可指定最大長(zhǎng)度為度為11n8000n8000; 若實(shí)際字符串長(zhǎng)度小于若實(shí)際字符串長(zhǎng)度小于n n,則按字串實(shí)際長(zhǎng)度存儲(chǔ),不
17、填,則按字串實(shí)際長(zhǎng)度存儲(chǔ),不填充空格。充空格。 當(dāng)存儲(chǔ)的字符串長(zhǎng)度不固定時(shí),使用當(dāng)存儲(chǔ)的字符串長(zhǎng)度不固定時(shí),使用VarcharVarchar數(shù)據(jù)類型可數(shù)據(jù)類型可以有效地節(jié)省空間。以有效地節(jié)省空間。 3 3文本類型文本類型 TextText Text Text類型存儲(chǔ)的是可變長(zhǎng)度的字符數(shù)據(jù)類型,最大長(zhǎng)度類型存儲(chǔ)的是可變長(zhǎng)度的字符數(shù)據(jù)類型,最大長(zhǎng)度為為2 23131-1-1字節(jié)字節(jié)2GB2GB的數(shù)據(jù)。當(dāng)存儲(chǔ)超過(guò)的數(shù)據(jù)。當(dāng)存儲(chǔ)超過(guò)80008000字節(jié)時(shí),可選擇字節(jié)時(shí),可選擇TextText數(shù)據(jù)類型。數(shù)據(jù)類型。l l 字符型數(shù)據(jù)采用字符型數(shù)據(jù)采用ASCASC碼字符集,英文符號(hào)占碼字符集,英文符號(hào)占1
18、1個(gè)字節(jié),漢個(gè)字節(jié),漢字占字占2 2個(gè)字節(jié)。個(gè)字節(jié)。l l 字符型字符串常量必須使用單引號(hào)括起來(lái)。字符型字符串常量必須使用單引號(hào)括起來(lái)。l l CharChar、VarcharVarchar數(shù)據(jù)類型若不指定長(zhǎng)度,默認(rèn)為數(shù)據(jù)類型若不指定長(zhǎng)度,默認(rèn)為1 1字節(jié)。字節(jié)。l l 若實(shí)際字符串長(zhǎng)度超過(guò)指定的若實(shí)際字符串長(zhǎng)度超過(guò)指定的n n個(gè)字節(jié),用局部變量存儲(chǔ)個(gè)字節(jié),用局部變量存儲(chǔ)時(shí)只截取字符串前時(shí)只截取字符串前n n個(gè)字節(jié),其余字符舍掉。個(gè)字節(jié),其余字符舍掉。l l 字符型字符串?dāng)?shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)字符型字符串?dāng)?shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)表中,但輸入的字符串長(zhǎng)度超過(guò)字段指定長(zhǎng)度
19、時(shí)系統(tǒng)不接表中,但輸入的字符串長(zhǎng)度超過(guò)字段指定長(zhǎng)度時(shí)系統(tǒng)不接受,也不會(huì)自動(dòng)截取。受,也不會(huì)自動(dòng)截取。l l 在用在用INSERTINSERT或或UPDATEUPDATE為數(shù)據(jù)表字符型字段輸入、更新字為數(shù)據(jù)表字符型字段輸入、更新字符串時(shí),如果超過(guò)符串時(shí),如果超過(guò)n n字節(jié)則系統(tǒng)提示字節(jié)則系統(tǒng)提示“將截?cái)嘧址蚨M(jìn)將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)制數(shù)據(jù)”并終止命令執(zhí)行,不能保存該數(shù)據(jù)。并終止命令執(zhí)行,不能保存該數(shù)據(jù)。 【例【例4-24-2】字符型字符串】字符型字符串a(chǎn)bcdABCDabcdABCD我們學(xué)習(xí)我們學(xué)習(xí)共共1212個(gè)字符占個(gè)字符占1616字節(jié)。字節(jié)。 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為char(
20、20)char(20)則存儲(chǔ)為:則存儲(chǔ)為: abcdABCDabcdABCD我們學(xué)習(xí)我們學(xué)習(xí) 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為varcharvarchar(20)(20)則按實(shí)際長(zhǎng)度存儲(chǔ)為:則按實(shí)際長(zhǎng)度存儲(chǔ)為: abcdABCDabcdABCD我們學(xué)習(xí)我們學(xué)習(xí) 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為char(10)char(10)或或varcharvarchar(10)(10),則在局,則在局部變量中存儲(chǔ)為:部變量中存儲(chǔ)為: abcdABCDabcdABCD我我 存儲(chǔ)到數(shù)據(jù)表字段中時(shí),系統(tǒng)提示存儲(chǔ)到數(shù)據(jù)表字段中時(shí),系統(tǒng)提示“將截?cái)嘧址驅(qū)⒔財(cái)嘧址蚨M(jìn)制數(shù)據(jù)二進(jìn)制數(shù)據(jù)”不能保存該數(shù)據(jù)。不能保存該
21、數(shù)據(jù)。 4.1.4統(tǒng)一字符型數(shù)據(jù) 統(tǒng)一字符型也稱為寬字符型,采用統(tǒng)一字符型也稱為寬字符型,采用UnicodeUnicode字符集,包字符集,包括了世界上所有語(yǔ)言符號(hào),一個(gè)英文符號(hào)或一個(gè)漢字都括了世界上所有語(yǔ)言符號(hào),一個(gè)英文符號(hào)或一個(gè)漢字都占用占用2 2個(gè)字節(jié)的內(nèi)存。前個(gè)字節(jié)的內(nèi)存。前127127個(gè)字符為個(gè)字符為ASCASC碼字符。碼字符。 SQL ServerSQL Server提供了提供了Nchar(n)Nchar(n)、Nvarchar(n)Nvarchar(n)和和NtextNtext三三種統(tǒng)一字符型數(shù)據(jù)。種統(tǒng)一字符型數(shù)據(jù)。1 1定長(zhǎng)統(tǒng)一字符型定長(zhǎng)統(tǒng)一字符型 NcharNchar(n)(
22、n) 按按n n個(gè)字符的固定長(zhǎng)度存放字符串,每個(gè)字符占用個(gè)字符的固定長(zhǎng)度存放字符串,每個(gè)字符占用2 2個(gè)個(gè)字節(jié),長(zhǎng)度范圍字節(jié),長(zhǎng)度范圍11n4000n4000; 若實(shí)際字符個(gè)數(shù)小于最大長(zhǎng)度若實(shí)際字符個(gè)數(shù)小于最大長(zhǎng)度n n,則尾部填充空格按,則尾部填充空格按n n個(gè)字符存儲(chǔ)。個(gè)字符存儲(chǔ)。2 2變長(zhǎng)統(tǒng)一字符型變長(zhǎng)統(tǒng)一字符型 NvarcharNvarchar(n)(n) 按不超過(guò)按不超過(guò)n n個(gè)字符的實(shí)際長(zhǎng)度存放字符串,可指定最大個(gè)字符的實(shí)際長(zhǎng)度存放字符串,可指定最大字符數(shù)為字符數(shù)為11n4000n4000; 若實(shí)際字符個(gè)數(shù)小于若實(shí)際字符個(gè)數(shù)小于n n,則按字符串實(shí)際長(zhǎng)度占用存儲(chǔ),則按字符串實(shí)際長(zhǎng)度
23、占用存儲(chǔ)空間,不填充空格??臻g,不填充空格。3 3統(tǒng)一字符文本類型統(tǒng)一字符文本類型 NtextNtext NtextNtext存儲(chǔ)的是可變長(zhǎng)度的雙字節(jié)字符數(shù)據(jù)類型,最存儲(chǔ)的是可變長(zhǎng)度的雙字節(jié)字符數(shù)據(jù)類型,最多可以存儲(chǔ)(多可以存儲(chǔ)(2 23030-1-1)/2/2個(gè)字符。個(gè)字符。l l 統(tǒng)一字符型數(shù)據(jù)長(zhǎng)度統(tǒng)一字符型數(shù)據(jù)長(zhǎng)度n n為為“字符字符”個(gè)數(shù),所占字節(jié)數(shù)個(gè)數(shù),所占字節(jié)數(shù)為為2 2* *n n。l l 統(tǒng)一字符型字符串常量必須使用單引號(hào)括起來(lái)。統(tǒng)一字符型字符串常量必須使用單引號(hào)括起來(lái)。l l NcharNchar、NvarcharNvarchar數(shù)據(jù)類型若不指定長(zhǎng)度數(shù)據(jù)類型若不指定長(zhǎng)度n n
24、,默認(rèn)為,默認(rèn)為1 1個(gè)字符(個(gè)字符(2 2個(gè)字節(jié))。個(gè)字節(jié))。l l 若實(shí)際字符串長(zhǎng)度超過(guò)指定的若實(shí)際字符串長(zhǎng)度超過(guò)指定的n n個(gè)字符,用局部變量個(gè)字符,用局部變量存儲(chǔ)時(shí)只截取字符串前存儲(chǔ)時(shí)只截取字符串前n n個(gè)字符,其余字符舍掉。個(gè)字符,其余字符舍掉。l l 統(tǒng)一字符型數(shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)統(tǒng)一字符型數(shù)據(jù)可以在企業(yè)管理器中直接輸入到數(shù)據(jù)表中,但輸入的字符個(gè)數(shù)超過(guò)字段長(zhǎng)度時(shí)則系統(tǒng)不接受。表中,但輸入的字符個(gè)數(shù)超過(guò)字段長(zhǎng)度時(shí)則系統(tǒng)不接受。l l 在用在用INSERTINSERT或或UPDATEUPDATE為數(shù)據(jù)表統(tǒng)一字符型字段輸入、為數(shù)據(jù)表統(tǒng)一字符型字段輸入、更新字符串時(shí),若超過(guò)
25、更新字符串時(shí),若超過(guò)n n個(gè)字符則系統(tǒng)提示個(gè)字符則系統(tǒng)提示“將截?cái)嘧謱⒔財(cái)嘧址蚨M(jìn)制數(shù)據(jù)符串或二進(jìn)制數(shù)據(jù)”并終止命令執(zhí)行,不能保存該數(shù)據(jù)。并終止命令執(zhí)行,不能保存該數(shù)據(jù)。 【例【例4-34-3】字符串】字符串a(chǎn)bcdABCDabcdABCD我們學(xué)習(xí)我們學(xué)習(xí)作為統(tǒng)一字作為統(tǒng)一字符型共符型共1212個(gè)字符占個(gè)字符占2424字節(jié)。字節(jié)。 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為NcharNchar(14)(14)則存儲(chǔ)為:則存儲(chǔ)為: abcdABCDabcdABCD我們學(xué)習(xí)我們學(xué)習(xí) 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為NvarcharNvarchar(14)(14)則按實(shí)際字符數(shù)存儲(chǔ)則按實(shí)際字符數(shù)存儲(chǔ)為:為
26、: abcdABCDabcdABCD我們學(xué)習(xí)我們學(xué)習(xí) 若定義數(shù)據(jù)類型為若定義數(shù)據(jù)類型為Nchar(10)Nchar(10)或或NvarcharNvarchar(10)(10),則在,則在局部變量中存儲(chǔ)為:局部變量中存儲(chǔ)為: abcdABCDabcdABCD我們我們 存儲(chǔ)到數(shù)據(jù)表字段中時(shí),系統(tǒng)提示存儲(chǔ)到數(shù)據(jù)表字段中時(shí),系統(tǒng)提示“將截?cái)嘧址驅(qū)⒔財(cái)嘧址蚨M(jìn)制數(shù)據(jù)二進(jìn)制數(shù)據(jù)”不能保存該數(shù)據(jù)。不能保存該數(shù)據(jù)。4.1.54.1.5日期日期/ /時(shí)間型數(shù)據(jù)時(shí)間型數(shù)據(jù) SQL ServerSQL Server提供的日期提供的日期/ /時(shí)間數(shù)據(jù)類型可存儲(chǔ)日期和時(shí)間時(shí)間數(shù)據(jù)類型可存儲(chǔ)日期和時(shí)間的組合數(shù)據(jù)。
27、以日期的組合數(shù)據(jù)。以日期/ /時(shí)間類型存儲(chǔ)日期或時(shí)間數(shù)據(jù)比字符時(shí)間類型存儲(chǔ)日期或時(shí)間數(shù)據(jù)比字符型更簡(jiǎn)單,因?yàn)樾透?jiǎn)單,因?yàn)镾QL ServerSQL Server提供了一系列專門處理日期和提供了一系列專門處理日期和時(shí)間的函數(shù)來(lái)處理這類數(shù)據(jù)。若使用字符型存儲(chǔ)日期和時(shí)時(shí)間的函數(shù)來(lái)處理這類數(shù)據(jù)。若使用字符型存儲(chǔ)日期和時(shí)間,計(jì)算機(jī)不能識(shí)別,也不能自動(dòng)對(duì)這些數(shù)據(jù)按照日期和間,計(jì)算機(jī)不能識(shí)別,也不能自動(dòng)對(duì)這些數(shù)據(jù)按照日期和時(shí)間進(jìn)行處理。時(shí)間進(jìn)行處理。 SQL ServerSQL Server提供了提供了SmalldatetimeSmalldatetime和和DatetimeDatetime兩種兩種日期日期
28、/ /時(shí)間的數(shù)據(jù)類型。時(shí)間的數(shù)據(jù)類型。1 1短日期短日期/ /時(shí)間型時(shí)間型 SmalldatetimeSmalldatetime 占占4 4個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,存放個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,存放19001900年年1 1月月1 1日到日到20792079年年6 6月月6 6日的日期時(shí)間,可以精確到分。日的日期時(shí)間,可以精確到分。 2 2基本日期基本日期/ /時(shí)間型時(shí)間型 DatetimeDatetime 占占8 8個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,存放個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,存放17531753年年1 1月月1 1日到日到99999999年年1212月月3131日的日期時(shí)間,可以精確到千分之一秒,即日的日期時(shí)
29、間,可以精確到千分之一秒,即0.0010.001s s。 注意:注意:l l 日期時(shí)間型常量與字符串常量相同必須使用單引號(hào)括起來(lái)。日期時(shí)間型常量與字符串常量相同必須使用單引號(hào)括起來(lái)。l l SQL ServerSQL Server在用戶沒(méi)有指定小時(shí)以下精確的時(shí)間數(shù)據(jù)時(shí),在用戶沒(méi)有指定小時(shí)以下精確的時(shí)間數(shù)據(jù)時(shí),自動(dòng)設(shè)置自動(dòng)設(shè)置DatetimeDatetime或或SmalldatetimeSmalldatetime數(shù)據(jù)的時(shí)間為數(shù)據(jù)的時(shí)間為00:00:0000:00:00。l l 數(shù)據(jù)庫(kù)中默認(rèn)的日期格式為數(shù)據(jù)庫(kù)中默認(rèn)的日期格式為“年年- -月月- -日日”,輸入時(shí)可使用,輸入時(shí)可使用年年/ /月月/
30、 /日日或或年年- -月月- -日日,也可以使用,也可以使用月月/ /日日/ /年年、月月- -日日- -年年、日日/ /月月/ /年年或或日日- -月月- -年年。l l 如果使用如果使用日日/ /月月/ /年年或或日日- -月月- -年年,系統(tǒng)不能區(qū)分時(shí),系統(tǒng)不能區(qū)分時(shí)默認(rèn)按默認(rèn)按“月月- -日日- -年年”處理。處理。4.1.64.1.6貨幣型數(shù)據(jù)貨幣型數(shù)據(jù) SQL ServerSQL Server提供了提供了SmallmoneySmallmoney和和MoneyMoney兩種兩種貨幣型數(shù)據(jù)。貨幣型數(shù)據(jù)。1 1短貨幣型短貨幣型 SmallmoneySmallmoney 該類型占該類型占4
31、 4個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,實(shí)際是由個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,實(shí)際是由2 2個(gè)個(gè)2 2字節(jié)的字節(jié)的整數(shù)構(gòu)成,前整數(shù)構(gòu)成,前2 2個(gè)字節(jié)為貨幣值的整數(shù)部分,后個(gè)字節(jié)為貨幣值的整數(shù)部分,后2 2個(gè)字節(jié)為貨個(gè)字節(jié)為貨幣值的小數(shù)部分。貨幣值的范圍從幣值的小數(shù)部分。貨幣值的范圍從-214748.3648-214748.3648到到+214748.3647+214748.3647,可以精確到萬(wàn)分之一貨幣單位。,可以精確到萬(wàn)分之一貨幣單位。2 2基本貨幣型基本貨幣型 MoneyMoney 該類型占該類型占8 8個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,由個(gè)字節(jié)固定長(zhǎng)度的內(nèi)存,由2 2個(gè)個(gè)4 4字節(jié)的整數(shù)構(gòu)字節(jié)的整數(shù)構(gòu)成,前成,前4
32、4個(gè)字節(jié)為貨幣值的整數(shù)部分,后個(gè)字節(jié)為貨幣值的整數(shù)部分,后4 4個(gè)字節(jié)表示貨幣值個(gè)字節(jié)表示貨幣值的小數(shù)部分。貨幣值的范圍從的小數(shù)部分。貨幣值的范圍從-2-26363到到2 26363-1-1,可精確到萬(wàn)分之,可精確到萬(wàn)分之一貨幣單位。一貨幣單位。 MoneyMoney或或SmallmoneySmallmoney類型的數(shù)值常量,應(yīng)加貨幣符號(hào)類型的數(shù)值常量,應(yīng)加貨幣符號(hào)$ $前綴,前綴,負(fù)數(shù)時(shí)加后綴負(fù)數(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位二進(jìn)制內(nèi)存,如果一個(gè)數(shù)據(jù)表中有位二進(jìn)制內(nèi)存,如果一個(gè)數(shù)據(jù)表中有8 8個(gè)以個(gè)以下的位類型字段,系統(tǒng)用一個(gè)字節(jié)存儲(chǔ)所有這些字段,超過(guò)下的位類型字段,系統(tǒng)用一個(gè)字節(jié)存儲(chǔ)所有這些字段,超過(guò)8 8個(gè)不足個(gè)不足1616個(gè)用個(gè)用2 2個(gè)字節(jié)存放。個(gè)字節(jié)存放。l l 位類型數(shù)據(jù)輸入任意的非位類型數(shù)據(jù)輸入任意的非0 0值時(shí),都按值時(shí),都按1 1處理。處理。 SQL Server SQL Server 常用數(shù)據(jù)類型見(jiàn)表常用數(shù)據(jù)類型見(jiàn)表4.14.1。4.1.84.1.8其他特殊數(shù)據(jù)
34、類型其他特殊數(shù)據(jù)類型1 1、TimestampTimestamp: 也稱為時(shí)間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫(kù)范圍內(nèi)的惟一值,也稱為時(shí)間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫(kù)范圍內(nèi)的惟一值,反應(yīng)數(shù)據(jù)庫(kù)中數(shù)據(jù)修改的相對(duì)順序,相當(dāng)于一個(gè)單調(diào)上升反應(yīng)數(shù)據(jù)庫(kù)中數(shù)據(jù)修改的相對(duì)順序,相當(dāng)于一個(gè)單調(diào)上升的計(jì)數(shù)器。的計(jì)數(shù)器。 2 2、UniqueidentifierUniqueidentifier: 用于存儲(chǔ)用于存儲(chǔ)1616字節(jié)長(zhǎng)度的二進(jìn)制數(shù)據(jù)類型,是字節(jié)長(zhǎng)度的二進(jìn)制數(shù)據(jù)類型,是SQL ServerSQL Server根據(jù)計(jì)算機(jī)網(wǎng)絡(luò)適配器地址和根據(jù)計(jì)算機(jī)網(wǎng)絡(luò)適配器地址和CPUCPU時(shí)鐘而產(chǎn)生的全局惟一標(biāo)時(shí)鐘而產(chǎn)生的全局惟一標(biāo)識(shí)符代
35、碼(識(shí)符代碼(Globally Unique IdentifierGlobally Unique Identifier,簡(jiǎn)寫為,簡(jiǎn)寫為GUIDGUID)。)。3 3、sqlsql_variant_variant: 用于存儲(chǔ)除文本、圖形數(shù)據(jù)和用于存儲(chǔ)除文本、圖形數(shù)據(jù)和timestamptimestamp類型數(shù)據(jù)外的其類型數(shù)據(jù)外的其它任何合法的它任何合法的SQL ServerSQL Server數(shù)據(jù)。數(shù)據(jù)。4 4、tabletable: 用于存儲(chǔ)對(duì)表或者視圖處理后的結(jié)果集。這種新的數(shù)據(jù)用于存儲(chǔ)對(duì)表或者視圖處理后的結(jié)果集。這種新的數(shù)據(jù)類型使得用一個(gè)變量可以存儲(chǔ)一個(gè)表,從而使函數(shù)或過(guò)程類型使得用一個(gè)變
36、量可以存儲(chǔ)一個(gè)表,從而使函數(shù)或過(guò)程返回查詢結(jié)果更加方便、快捷。返回查詢結(jié)果更加方便、快捷。4.1.94.1.9圖像、文本型數(shù)據(jù)的存儲(chǔ)方式圖像、文本型數(shù)據(jù)的存儲(chǔ)方式 存儲(chǔ)文本、圖像等大型數(shù)據(jù)時(shí),可使用存儲(chǔ)文本、圖像等大型數(shù)據(jù)時(shí),可使用TextText、NtextNtext和和ImageImage三種數(shù)據(jù)類型,這三種數(shù)據(jù)類型的數(shù)據(jù)量往往比較大,三種數(shù)據(jù)類型,這三種數(shù)據(jù)類型的數(shù)據(jù)量往往比較大,在在SQL Server 7.0SQL Server 7.0以前的版本中,文本和圖像數(shù)據(jù)被存儲(chǔ)以前的版本中,文本和圖像數(shù)據(jù)被存儲(chǔ)在專門的頁(yè)中,在數(shù)據(jù)行的相應(yīng)位置只保存指向這些數(shù)據(jù)在專門的頁(yè)中,在數(shù)據(jù)行的相應(yīng)位置
37、只保存指向這些數(shù)據(jù)的指針。的指針。 SQL Server 2000SQL Server 2000提供了將小型文本或圖像數(shù)據(jù)直接在行提供了將小型文本或圖像數(shù)據(jù)直接在行中存儲(chǔ)的功能,不需要到另外的頁(yè)中訪問(wèn)這些數(shù)據(jù),使得中存儲(chǔ)的功能,不需要到另外的頁(yè)中訪問(wèn)這些數(shù)據(jù),使得讀寫文本和圖像數(shù)據(jù)可以與讀寫普通字符串一樣快。讀寫文本和圖像數(shù)據(jù)可以與讀寫普通字符串一樣快。 使用系統(tǒng)存儲(chǔ)過(guò)程使用系統(tǒng)存儲(chǔ)過(guò)程sp_tableoptionsp_tableoption可以指定文本或圖像可以指定文本或圖像數(shù)據(jù)是否在表的行中存儲(chǔ)。數(shù)據(jù)是否在表的行中存儲(chǔ)。 語(yǔ)法格式:語(yǔ)法格式: sp_tableoptionsp_tableo
38、ption 表名表名,text in row,TRUE|FALSEtext in row,TRUE|FALSE4.1.94.1.9圖像、文本型數(shù)據(jù)的存儲(chǔ)方式圖像、文本型數(shù)據(jù)的存儲(chǔ)方式說(shuō)明:說(shuō)明:l l 當(dāng)指定當(dāng)指定“TRUE”TRUE”選項(xiàng)時(shí),允許小型文本或圖像數(shù)據(jù)直接選項(xiàng)時(shí),允許小型文本或圖像數(shù)據(jù)直接在該表的行中存儲(chǔ),而且還可以指定文本或圖像數(shù)據(jù)大小在該表的行中存儲(chǔ),而且還可以指定文本或圖像數(shù)據(jù)大小的上限值(的上限值(24-700024-7000字節(jié)),默認(rèn)上限字節(jié)),默認(rèn)上限256256字節(jié)。字節(jié)。l l 當(dāng)數(shù)據(jù)的大小不超過(guò)上限值而且同時(shí)數(shù)據(jù)行有足夠空間當(dāng)數(shù)據(jù)的大小不超過(guò)上限值而且同時(shí)數(shù)據(jù)
39、行有足夠空間時(shí),文本和圖像數(shù)據(jù)就會(huì)直接存儲(chǔ)在行中。時(shí),文本和圖像數(shù)據(jù)就會(huì)直接存儲(chǔ)在行中。l l 若以上兩個(gè)條件有一個(gè)不滿足時(shí),行中仍只存放指向數(shù)若以上兩個(gè)條件有一個(gè)不滿足時(shí),行中仍只存放指向數(shù)據(jù)存儲(chǔ)位置的指針。據(jù)存儲(chǔ)位置的指針?!纠纠?-44-4】在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表】在當(dāng)前數(shù)據(jù)庫(kù)中創(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 / /* * 以下語(yǔ)句指定不大于以下語(yǔ)句指定不大于10001000字節(jié)的文本或圖像數(shù)據(jù)在行中存儲(chǔ)字節(jié)的文本或圖像數(shù)據(jù)在行中存儲(chǔ) * */ /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 / /* * 以下語(yǔ)句指定以下語(yǔ)句指定MytableMytable表不在行中存儲(chǔ)文本和圖像數(shù)據(jù)表不在行中存儲(chǔ)文本和圖像數(shù)據(jù) * */ /sp_tableoption Mytablesp_tableoption Mytable , text in row, FALSE , text in row, FALSE4.1.104.1.10、局部變量的定義與輸出、局部變量的定義與輸出 本書在第本書在第7 7、8 8章將專門詳細(xì)介紹章將專門詳細(xì)介紹T-SQLT-SQL的程序設(shè)計(jì)、批的程序設(shè)計(jì)、批處理、局部變量、自定義類型和函數(shù)、游標(biāo)、存儲(chǔ)
42、過(guò)程處理、局部變量、自定義類型和函數(shù)、游標(biāo)、存儲(chǔ)過(guò)程與觸發(fā)器,但在前幾章也許會(huì)用到批處理及局部變量的與觸發(fā)器,但在前幾章也許會(huì)用到批處理及局部變量的概念,為此我們先簡(jiǎn)單介紹一下有關(guān)的知識(shí)。概念,為此我們先簡(jiǎn)單介紹一下有關(guān)的知識(shí)。1 1、批處理、批處理 批處理是一個(gè)或多個(gè)批處理是一個(gè)或多個(gè)SQLSQL語(yǔ)句的集合,構(gòu)成一個(gè)獨(dú)立的語(yǔ)句的集合,構(gòu)成一個(gè)獨(dú)立的程序模塊,以程序模塊,以GOGO語(yǔ)句為結(jié)束標(biāo)志。從程序開(kāi)頭或從某一語(yǔ)句為結(jié)束標(biāo)志。從程序開(kāi)頭或從某一個(gè)個(gè)GOGO語(yǔ)句開(kāi)始到下一個(gè)語(yǔ)句開(kāi)始到下一個(gè)GOGO語(yǔ)句或程序結(jié)束為一個(gè)批處理。語(yǔ)句或程序結(jié)束為一個(gè)批處理。2 2、局部變量、局部變量 局部變量是用
43、戶自定義的變量,用于臨時(shí)存儲(chǔ)各種類局部變量是用戶自定義的變量,用于臨時(shí)存儲(chǔ)各種類型的數(shù)據(jù)。型的數(shù)據(jù)。3 3、定義局部變量、定義局部變量 語(yǔ)法格式:語(yǔ)法格式: DECLARE DECLARE 變量名變量名 數(shù)據(jù)類型數(shù)據(jù)類型(長(zhǎng)度長(zhǎng)度) ) ,n n 例如:例如:DECLARE x intDECLARE x int , s decimal(8.4) , s decimal(8.4) 注意:注意:l l 局部變量必須以局部變量必須以 開(kāi)頭以區(qū)別字段名變量。固定長(zhǎng)度的類開(kāi)頭以區(qū)別字段名變量。固定長(zhǎng)度的類型不需要指定長(zhǎng)度。型不需要指定長(zhǎng)度。l l 局部變量只在一個(gè)批處理內(nèi)有效,其生命周期從定義開(kāi)始局部變
44、量只在一個(gè)批處理內(nèi)有效,其生命周期從定義開(kāi)始到它遇到的第一個(gè)到它遇到的第一個(gè)GOGO語(yǔ)句或者到程序結(jié)束。語(yǔ)句或者到程序結(jié)束。4 4、局部變量的賦值、局部變量的賦值 語(yǔ)法格式:語(yǔ)法格式: SET SET 局部變量局部變量= =表達(dá)式表達(dá)式5 5、顯示輸出局部變量、顯示輸出局部變量 語(yǔ)法格式:語(yǔ)法格式: PRINT PRINT 局部變量或表達(dá)式局部變量或表達(dá)式4.2 4.2 運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式 4.2.14.2.1、算術(shù)運(yùn)算符與表達(dá)式、算術(shù)運(yùn)算符與表達(dá)式 算術(shù)運(yùn)算符:算術(shù)運(yùn)算符: +(+(加加) )、-(-(減減) )、* *( (乘乘) )、/(/(除除) )、%(%(取模求余取模求余
45、) )。4.2.24.2.2、邏輯類運(yùn)算符與邏輯值表達(dá)式、邏輯類運(yùn)算符與邏輯值表達(dá)式 SQLSQL邏輯值表達(dá)式都是作為判斷條件使用的,取值為:邏輯值表達(dá)式都是作為判斷條件使用的,取值為:l l TRUETRUE: 真,條件成立真,條件成立l l FALSEFALSE: 假,條件不成立假,條件不成立l l UNKNOWNUNKNOWN:不確定,是某個(gè)數(shù)據(jù)與:不確定,是某個(gè)數(shù)據(jù)與NULLNULL比較的結(jié)果比較的結(jié)果 在數(shù)據(jù)庫(kù)中,在數(shù)據(jù)庫(kù)中,NULLNULL是一個(gè)不知道或不能確定的專用數(shù)據(jù)是一個(gè)不知道或不能確定的專用數(shù)據(jù)值,它不等于數(shù)值值,它不等于數(shù)值0 0和字符的空格。某個(gè)數(shù)據(jù)與和字符的空格。某個(gè)
46、數(shù)據(jù)與NULLNULL進(jìn)行進(jìn)行比較運(yùn)算的邏輯值就是比較運(yùn)算的邏輯值就是UNKNOWNUNKNOWN,因?yàn)榇蠹覍?duì)使用,因?yàn)榇蠹覍?duì)使用UNKNOWNUNKNOWN都不習(xí)慣,所以大多數(shù)都不習(xí)慣,所以大多數(shù)SQLSQL版本都提供了專門的空值運(yùn)算版本都提供了專門的空值運(yùn)算符符“IS NULL”IS NULL”,用于判斷是否是空值,用于判斷是否是空值NULLNULL。 例如:假設(shè)例如:假設(shè)“職稱職稱”的內(nèi)容為的內(nèi)容為NULLNULL,若有條件表達(dá)式:,若有條件表達(dá)式: 職稱職稱= =講師講師 則該表達(dá)式的值不是則該表達(dá)式的值不是truetrue或或falsefalse而是而是unknownunknown。
47、 SQL Server 2000SQL Server 2000提供了由提供了由7 7類運(yùn)算符組成的邏輯值條件類運(yùn)算符組成的邏輯值條件表達(dá)式。表達(dá)式。1 1、比較運(yùn)算符、比較運(yùn)算符 ( (大于大于) )、=(=(大于等于大于等于) )、 ( (小于小于) )、= (= (小于等于小于等于) ) =( =(等于等于) )、或或!=(!=(不等于不等于) )、!(!(不大于不大于) )、!(! 500 500 則單價(jià)大于則單價(jià)大于500500條件為條件為TRUETRUE,單價(jià)不大于,單價(jià)不大于500500條件為條件為FALSEFALSE 銷售單價(jià)銷售單價(jià)- -進(jìn)價(jià)進(jìn)價(jià)=銷售單價(jià)銷售單價(jià)/2 /2 則
48、毛利潤(rùn)大于等于一半時(shí)條件為真則毛利潤(rùn)大于等于一半時(shí)條件為真2 2、邏輯運(yùn)算符、邏輯運(yùn)算符 not ( not (邏輯非邏輯非) )、 and (and (邏輯與邏輯與) )、 or (or (邏輯或邏輯或) ) 邏輯條件表達(dá)式:邏輯條件表達(dá)式: not not 邏輯值表達(dá)式邏輯值表達(dá)式 邏輯值表達(dá)式邏輯值表達(dá)式1 and 1 and 邏輯值表達(dá)式邏輯值表達(dá)式2 2 邏輯值表達(dá)式邏輯值表達(dá)式1 or 1 or 邏輯值表達(dá)式邏輯值表達(dá)式2 2 如:如:notnot單價(jià)單價(jià) 500 500 則單價(jià)不大于則單價(jià)不大于500500條件為真,等價(jià)條件為真,等價(jià)于:?jiǎn)蝺r(jià)于:?jiǎn)蝺r(jià) = 500=1000=100
49、0 則只有孫立華收到的商品中進(jìn)價(jià)大于等于則只有孫立華收到的商品中進(jìn)價(jià)大于等于10001000時(shí)條件才時(shí)條件才為真為真 如:?jiǎn)蝺r(jià)如:?jiǎn)蝺r(jià)=500 or =500 or 單價(jià)單價(jià)=1000 =1000 則單價(jià)等于則單價(jià)等于500500或者等于或者等于10001000,只要滿足一個(gè)條件就為真,只要滿足一個(gè)條件就為真2 2、邏輯運(yùn)算符、邏輯運(yùn)算符 在邏輯運(yùn)算中,邏輯值在邏輯運(yùn)算中,邏輯值UNKNOWN(UNKNOWN(不確定不確定) )可以看成是介于真假之間的可以看成是介于真假之間的中立值,既不是真也不是假,不真不假就是不確定。中立值,既不是真也不是假,不真不假就是不確定。 如果把如果把TRUE UN
50、KNOWN FALSETRUE UNKNOWN FALSE這三者的關(guān)系理解為由高級(jí)這三者的關(guān)系理解為由高級(jí)低低級(jí),就比較好理解三者的邏輯運(yùn)算結(jié)果了。級(jí),就比較好理解三者的邏輯運(yùn)算結(jié)果了。ANDAND運(yùn)算:結(jié)果取低級(jí)的運(yùn)算:結(jié)果取低級(jí)的 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運(yùn)算:結(jié)果取高級(jí)的運(yùn)算:結(jié)果取高級(jí)的 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運(yùn)算:結(jié)果取相反的運(yùn)算:結(jié)果取相反的 NOT TRUE NOT TRUE 結(jié)果結(jié)果FALSE FALSE NOT UNKOWN NOT UNKOWN 結(jié)果結(jié)果UNKOWNUNKOWN NOT FALSE NOT FALSE 結(jié)果結(jié)果TRUETRUE3 3、范圍運(yùn)算符、范圍運(yùn)算符 not between not betwe
52、en and and 條件表達(dá)式:表達(dá)式條件表達(dá)式:表達(dá)式 not between not between 起始值起始值 and and 終止值終止值 between between and and用于判斷表達(dá)式的值是否在某個(gè)范圍內(nèi),若在用于判斷表達(dá)式的值是否在某個(gè)范圍內(nèi),若在指定范圍內(nèi)條件為真,不在指定范圍內(nèi)條件為假。等價(jià)于:指定范圍內(nèi)條件為真,不在指定范圍內(nèi)條件為假。等價(jià)于: 表達(dá)式表達(dá)式=起始值起始值 and and 表達(dá)式表達(dá)式=終止值終止值 即:起始值即:起始值=表達(dá)式表達(dá)式=終止值終止值 not between not between and and判斷表達(dá)式的值是否不在某個(gè)范圍內(nèi)
53、,若不判斷表達(dá)式的值是否不在某個(gè)范圍內(nèi),若不在指定范圍內(nèi)條件為真,否則為假。等價(jià)于:在指定范圍內(nèi)條件為真,否則為假。等價(jià)于: 表達(dá)式表達(dá)式 終止值終止值 即:表達(dá)式小于起始值或大于終止值條件為真即:表達(dá)式小于起始值或大于終止值條件為真 如:如: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實(shí)際上就是邏輯非運(yùn)算符。實(shí)際上就是邏輯非運(yùn)算符。 4 4、多值列表運(yùn)算符、多值列表運(yùn)算符 not not in ( in ( ) ) 條件表達(dá)式:條件表達(dá)式: not not 表達(dá)式表達(dá)式 in ( in ( 值值1, 1, 值值2, 2, , , 值值n )n ) in ( in ( ) )用于判斷表達(dá)式的值是否等于所給出的值之用于判斷表達(dá)式的值是否等于所給出的值之一,只要與其中任何一個(gè)值相等條件就為真,全部都不一,只要與其中
55、任何一個(gè)值相等條件就為真,全部都不相等為假。相等為假。 Not Not in ( in ( ) )表示判斷表達(dá)式的值是否全部不等表示判斷表達(dá)式的值是否全部不等于所給出的值,所有的值一個(gè)也不相等條件為真,只要于所給出的值,所有的值一個(gè)也不相等條件為真,只要有一個(gè)相等為假。有一個(gè)相等為假。 如:如:X in (1X in (1,3 3,5) 5) 則相當(dāng)于邏輯表達(dá)式:則相當(dāng)于邏輯表達(dá)式: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) 則相當(dāng)于邏輯表達(dá)式:則相當(dāng)于邏輯表達(dá)式:X1 and X3 and
56、X5X1 and X3 and X5。 5 5、用于子查詢的運(yùn)算符、用于子查詢的運(yùn)算符(1)列表比較運(yùn)算符)列表比較運(yùn)算符 ANY | ALL 列表運(yùn)算符列表運(yùn)算符ANY與包含運(yùn)算符與包含運(yùn)算符in功能大致相同,但功能大致相同,但I(xiàn)N可以獨(dú)立使用,可以獨(dú)立使用,而而ANY必須與比較運(yùn)算符配合使用;必須與比較運(yùn)算符配合使用;in只是比較相等(包含),只是比較相等(包含),ANY可可進(jìn)行任何比較。進(jìn)行任何比較。 列表比較的條件表達(dá)式格式:列表比較的條件表達(dá)式格式: 表達(dá)式表達(dá)式 比較運(yùn)算符比較運(yùn)算符 ANY (子查詢的一列值子查詢的一列值) 表達(dá)式表達(dá)式 比較運(yùn)算符比較運(yùn)算符 ALL (子查詢的一
57、列值子查詢的一列值)該條件將表達(dá)式與子查詢返回的一整列值按給定的比較運(yùn)算符逐一比較:該條件將表達(dá)式與子查詢返回的一整列值按給定的比較運(yùn)算符逐一比較: 只要有一個(gè)比較成立:只要有一個(gè)比較成立: ANY的結(jié)果為真的結(jié)果為真(相當(dāng)于或運(yùn)算相當(dāng)于或運(yùn)算)。 只有全部比較都成立:只有全部比較都成立: ALL的結(jié)果為真的結(jié)果為真(相當(dāng)于與運(yùn)算相當(dāng)于與運(yùn)算)。 在在SQL-92標(biāo)準(zhǔn)中還可使用標(biāo)準(zhǔn)中還可使用SOME運(yùn)算符,運(yùn)算符,SOME運(yùn)算符與運(yùn)算符與ANY 等效。等效。(2)記錄存在邏輯運(yùn)算符)記錄存在邏輯運(yùn)算符 not exists 邏輯運(yùn)算符邏輯運(yùn)算符not exists可以檢查子查詢返回的結(jié)果集中是
58、否包含有記可以檢查子查詢返回的結(jié)果集中是否包含有記錄。若子查詢結(jié)果集中包含記錄,則錄。若子查詢結(jié)果集中包含記錄,則exists為真,否則為假。為真,否則為假。 ANY | ALL與與not exists的詳細(xì)用法見(jiàn)第的詳細(xì)用法見(jiàn)第5章子查詢。章子查詢。6 6、空值運(yùn)算符、空值運(yùn)算符 not is nullnot is null 條件表達(dá)式:表達(dá)式條件表達(dá)式:表達(dá)式 not is nullnot is null is null is null表示判斷表達(dá)式的值是否等于空值,如果是空表示判斷表達(dá)式的值是否等于空值,如果是空值值NULLNULL則條件為真,否則為假。則條件為真,否則為假。 not i
59、s nullnot is null表示判斷表達(dá)式的值是否不等于空值,如表示判斷表達(dá)式的值是否不等于空值,如果表達(dá)式的值不是空值果表達(dá)式的值不是空值NULLNULL則條件為真。則條件為真。 例如:假設(shè)例如:假設(shè)“職稱職稱”的內(nèi)容為的內(nèi)容為NULLNULL,則:,則: ( 職稱職稱= =講師講師 )= = UNKNOWNUNKNOWN 或:或:“ “ 職稱職稱 IS NULL ”IS NULL ”的值為真。的值為真。 7 7、字符模糊匹配運(yùn)算符、字符模糊匹配運(yùn)算符 not like not like 條件表達(dá)式:字符串表達(dá)式條件表達(dá)式:字符串表達(dá)式 not like not like 通配符通配符
60、 其中通配符可以使用:其中通配符可以使用:(1 1)%:代表:代表0 0個(gè)或多個(gè)字符的任意字符串個(gè)或多個(gè)字符的任意字符串 如:字符串表達(dá)式如:字符串表達(dá)式 like A% like A% 則不論字符串有多少個(gè)字符,只要第一個(gè)字符(開(kāi)頭)則不論字符串有多少個(gè)字符,只要第一個(gè)字符(開(kāi)頭)是是“A”A”,條件為真。,條件為真。 如:字符串表達(dá)式如:字符串表達(dá)式 like %AB like %AB 則不論字符串多少個(gè)字符,只要最后兩個(gè)字符(末尾)則不論字符串多少個(gè)字符,只要最后兩個(gè)字符(末尾)是是“AB”AB”,條件為真。,條件為真。 如:字符串表達(dá)式如:字符串表達(dá)式 like %ABC%like %
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 定金租賃合同
- 裝修合作協(xié)議合同
- 藥品經(jīng)營(yíng)質(zhì)量保證協(xié)議書
- 本家具采購(gòu)合同
- 小學(xué)六年級(jí) 分?jǐn)?shù)加減乘除口算題
- 2025年重慶貨運(yùn)從業(yè)資格考試題目及答案解析大全
- 2025年拉薩貨運(yùn)從業(yè)資格證考試內(nèi)容
- 2024-2025學(xué)年高中化學(xué)專題3從礦物到基礎(chǔ)材料第三單元含硅礦物與信息材料學(xué)案含解析蘇教版必修1
- 2024-2025學(xué)年二年級(jí)數(shù)學(xué)上冊(cè)第四單元表內(nèi)除法一第7課時(shí)練習(xí)九1教案蘇教版
- 一年級(jí)上冊(cè)語(yǔ)文工作計(jì)劃
- 通用稅務(wù)自查情況說(shuō)明報(bào)告(7篇)
- 現(xiàn)澆箱梁施工危險(xiǎn)源辨識(shí)與分析
- 2023外貿(mào)業(yè)務(wù)協(xié)調(diào)期中試卷
- 新人教鄂教版(2017)五年級(jí)下冊(cè)科學(xué)全冊(cè)教學(xué)課件
- GB/T 16475-1996變形鋁及鋁合金狀態(tài)代號(hào)
- 無(wú)紙化會(huì)議系統(tǒng)解決方案
- 佛教空性與緣起課件
- 上海鐵路局勞動(dòng)安全“八防”考試題庫(kù)(含答案)
- 《愿望的實(shí)現(xiàn)》教學(xué)設(shè)計(jì)
- 效率提升和品質(zhì)改善方案
- 義務(wù)教育學(xué)科作業(yè)設(shè)計(jì)與管理指南
評(píng)論
0/150
提交評(píng)論