SQL數(shù)據(jù)庫(kù)字段數(shù)據(jù)類(lèi)型說(shuō)明_第1頁(yè)
SQL數(shù)據(jù)庫(kù)字段數(shù)據(jù)類(lèi)型說(shuō)明_第2頁(yè)
SQL數(shù)據(jù)庫(kù)字段數(shù)據(jù)類(lèi)型說(shuō)明_第3頁(yè)
SQL數(shù)據(jù)庫(kù)字段數(shù)據(jù)類(lèi)型說(shuō)明_第4頁(yè)
SQL數(shù)據(jù)庫(kù)字段數(shù)據(jù)類(lèi)型說(shuō)明_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、SQL數(shù)據(jù)庫(kù)字段數(shù)據(jù)類(lèi)型說(shuō)明數(shù)據(jù)類(lèi)型塞描述bit整型bit數(shù)據(jù)類(lèi)型是整型,其值只能是0、1或空值。這種數(shù)據(jù)類(lèi)型附于存儲(chǔ)只有兩種可能值的數(shù)據(jù),如Yes或No、True或False、On或Ofint整型int數(shù)據(jù)類(lèi)型可以存儲(chǔ)從-231(-48)到231(2147483647)之間的整數(shù)。存儲(chǔ)到數(shù)據(jù)庫(kù)的幾乎所有數(shù)值型的數(shù)據(jù)都可以用這種數(shù)據(jù)類(lèi)型。這種數(shù)據(jù)類(lèi)型在數(shù)據(jù)庫(kù)里占用4個(gè)字節(jié)smallint整型smallint數(shù)據(jù)類(lèi)型可以存儲(chǔ)從-215(-32768)到215(32767)之間的整數(shù)。這種數(shù)據(jù)類(lèi)型對(duì)存儲(chǔ)L些常限定在特定范圍內(nèi)的數(shù)值型數(shù)據(jù)非常有用。這種數(shù)據(jù)類(lèi)型在數(shù)據(jù)庫(kù)里占用2字節(jié)空間tinyint整

2、型tinyint數(shù)據(jù)類(lèi)型能存儲(chǔ)從0到255之間的整數(shù)。它在你只打算存儲(chǔ)有限數(shù)目的數(shù)值時(shí)很有用。這種數(shù)據(jù)類(lèi)型在數(shù)據(jù)庫(kù)中占用1個(gè)字節(jié)numeric精確數(shù)值型numeric數(shù)據(jù)類(lèi)型與decimal型相同Decimal精確數(shù)值型decimal數(shù)據(jù)類(lèi)型能用來(lái)存儲(chǔ)從-1038-1到1038-1的固定精度和范圍的數(shù)值型數(shù)據(jù)。使用這種數(shù)據(jù)類(lèi)型時(shí),必須指定范圍和精度。范圍是小數(shù)點(diǎn)左右所能存儲(chǔ)的數(shù)字的總位數(shù)。精度是小數(shù)點(diǎn)右邊存儲(chǔ)的數(shù)字的位數(shù)Money貨幣型money數(shù)據(jù)類(lèi)型用來(lái)表示錢(qián)和貨幣值。這種數(shù)據(jù)類(lèi)型能存儲(chǔ)從-9220億到9220億之間的數(shù)據(jù),精確到貨幣單位的萬(wàn)分之一Smallmoney貨幣型smallmon

3、ey數(shù)據(jù)類(lèi)型用來(lái)表示錢(qián)和貨幣值。這種數(shù)據(jù)類(lèi)型能存儲(chǔ)從到之間的數(shù)據(jù),精確到貨幣單位的萬(wàn)分之一Float近似數(shù)值型float數(shù)據(jù)類(lèi)型是一種近似數(shù)值類(lèi)型,供浮點(diǎn)數(shù)使用。說(shuō)浮點(diǎn)數(shù)是近似的,是因?yàn)樵诰叻秶鷥?nèi)不是所有的數(shù)都能精確表示。浮點(diǎn)數(shù)可以是從+308到+308之間的任意數(shù)Real近似數(shù)值型real數(shù)據(jù)類(lèi)型像浮點(diǎn)數(shù)一樣,是近似數(shù)值類(lèi)型。它可以表示數(shù)值在+38到+38之間的浮點(diǎn)數(shù)Datetime日期時(shí)間型datetime數(shù)據(jù)類(lèi)型用來(lái)表示日期和時(shí)間。這種數(shù)據(jù)類(lèi)型存儲(chǔ)從1753年1月1日到9999年12月31日間所有的日期和時(shí)間數(shù)據(jù),精確到二白分之一秒或毫秒Smalldatetime日期時(shí)間型smallda

4、tetime數(shù)據(jù)類(lèi)型用來(lái)表上從1900年1月1日到2079年6月6日間的日期和時(shí)間,精確到一分鐘cursor特殊數(shù)據(jù)型cursor數(shù)據(jù)類(lèi)型卷-種特殊的數(shù)據(jù)類(lèi)型,它包含一個(gè)對(duì)游標(biāo)的引用。這種數(shù)據(jù)類(lèi)型用在存儲(chǔ)過(guò)程中,而且創(chuàng)建表時(shí)不能用Timestamp特殊數(shù)據(jù)型timestamp數(shù)據(jù)類(lèi)型是l種特殊的數(shù)據(jù)類(lèi)型,用來(lái)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)范圍內(nèi)的唯一數(shù)碼。一個(gè)表中只能有一個(gè)timestamp歹U。每次插入或修改一行時(shí),timestamp歹U的值都會(huì)改變。盡管它的名字中有time,但timestamp列不是人們可識(shí)別的日期。在一個(gè)數(shù)據(jù)庫(kù)里,timestamp值是唯一的Uniqueidentifier特殊數(shù)據(jù)型U

5、niqueidentifier數(shù)據(jù)類(lèi)型用來(lái)存淅-個(gè)全局唯一標(biāo)識(shí)符,即GUID。GUID確實(shí)是全局唯一的。這個(gè)數(shù)幾乎沒(méi)有機(jī)會(huì)在另一個(gè)系統(tǒng)中被重建??梢允褂肗EWID函數(shù)或轉(zhuǎn)換一個(gè)字符串為唯一標(biāo)識(shí)符來(lái)初始化具有唯一標(biāo)識(shí)符的列Char字符型char數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)指定長(zhǎng)度的定長(zhǎng)非統(tǒng)一編碼型的數(shù)據(jù)。當(dāng)定義一列為此類(lèi)型時(shí),你必須指定列長(zhǎng)。當(dāng)你總能知道要存儲(chǔ)的數(shù)據(jù)的長(zhǎng)度時(shí),此數(shù)據(jù)類(lèi)型很有用。例如,當(dāng)你按郵政編碼加4個(gè)字符格式來(lái)存儲(chǔ)數(shù)據(jù)時(shí),你知道總要用到10個(gè)字符。此數(shù)據(jù)類(lèi)型的列寬最大為8000個(gè)字符Varchar字符型varchar數(shù)據(jù)類(lèi)型,向char類(lèi)型一樣,用來(lái)存儲(chǔ)非統(tǒng)一編碼型字符數(shù)據(jù)。與char型不

6、一樣,此數(shù)據(jù)類(lèi)型為變長(zhǎng)。當(dāng)定義一列為該數(shù)據(jù)類(lèi)型時(shí),你要指定該列的最大長(zhǎng)度。它與char數(shù)據(jù)類(lèi)型最大的區(qū)別是,存儲(chǔ)的長(zhǎng)度不是列長(zhǎng),而是數(shù)據(jù)的長(zhǎng)度Text字符型text數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)大量的非統(tǒng)一編碼型字符數(shù)據(jù)。這種數(shù)據(jù)類(lèi)型最多可以有231-1或20億個(gè)字符Nchar統(tǒng)編碼字符型nchar數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)定長(zhǎng)統(tǒng)一編碼字符型數(shù)據(jù)。統(tǒng)一編碼用雙字節(jié)結(jié)構(gòu)來(lái)存儲(chǔ)每個(gè)字符,而不是用單字節(jié)(普通文本中的情況)。它允許大量的擴(kuò)展字符。此數(shù)據(jù)類(lèi)型能存儲(chǔ)4000種字符,使用的字節(jié)空間上增加了一倍Nvarchar統(tǒng)編碼字符型nvarchar數(shù)據(jù)類(lèi)型用作變長(zhǎng)的統(tǒng)一編碼字符型數(shù)據(jù)。此數(shù)據(jù)類(lèi)型能存儲(chǔ)4000種字符,使用的字

7、節(jié)空間增加了一倍Ntext統(tǒng)編碼字符型ntext數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)大量的統(tǒng)一編碼字符型數(shù)據(jù)。這種數(shù)據(jù)類(lèi)型能存儲(chǔ)230-1或?qū)⒔?0億個(gè)字符,且使用的字節(jié)空間增加了一倍Binary二進(jìn)制數(shù)據(jù)類(lèi)型binary數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)可達(dá)8000字節(jié)長(zhǎng)的定長(zhǎng)的二進(jìn)制數(shù)據(jù)。當(dāng)輸入表的內(nèi)容接近相同的長(zhǎng)度時(shí),你應(yīng)該使用這種數(shù)據(jù)類(lèi)型varbinary二進(jìn)制數(shù)據(jù)類(lèi)型varbinary數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)可達(dá)8000字B長(zhǎng)的變長(zhǎng)的二進(jìn)制數(shù)據(jù)。當(dāng)輸入表的內(nèi)容大小可變時(shí),你應(yīng)該使用這種數(shù)據(jù)類(lèi)型image二進(jìn)制數(shù)據(jù)類(lèi)型image數(shù)據(jù)類(lèi)型用來(lái)存儲(chǔ)變長(zhǎng)的二進(jìn)制數(shù)據(jù),最大可達(dá)231-1或大約20億字節(jié)1)char、varchar、tex

8、t和nchar、nvarchar、ntextchar和varchar的長(zhǎng)度都在1到8000之間,它們的區(qū)別在于char是定長(zhǎng)字符數(shù)據(jù),而varchar是變長(zhǎng)字符數(shù)據(jù)。所謂定長(zhǎng)就是長(zhǎng)度固定的,當(dāng)輸入的數(shù)據(jù)長(zhǎng)度沒(méi)有達(dá)到指定的長(zhǎng)度時(shí)將自動(dòng)以英文空格在其后面填充,使長(zhǎng)度達(dá)到相應(yīng)的長(zhǎng)度;而變長(zhǎng)字符數(shù)據(jù)則不會(huì)以空格填充。text存儲(chǔ)可變長(zhǎng)度的非Unicode數(shù)據(jù),最大長(zhǎng)度為2A31-1(2,147,483,647)個(gè)字符。后面三種數(shù)據(jù)類(lèi)型和前面的相比,從名稱上看只是多了個(gè)字母n,它表示存儲(chǔ)的是Unicode數(shù)據(jù)類(lèi)型的字符。寫(xiě)過(guò)程序的朋友對(duì)Unicode應(yīng)該很了解。字符中,英文字符只需要一個(gè)字節(jié)存儲(chǔ)就足夠了

9、,但漢字眾多,需要兩個(gè)字節(jié)存儲(chǔ),英文與漢字同時(shí)存在時(shí)容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問(wèn)題而產(chǎn)生的,它所有的字符都用兩個(gè)字節(jié)表示,即英文字符也是用兩個(gè)字節(jié)表示。nchar、nvarchar的長(zhǎng)度是在1到4000之間。和char、varchar比較:nchar、nvarchar則最多存儲(chǔ)4000個(gè)字符,不論是英文還是漢字;而char、varchar最多能存儲(chǔ)8000個(gè)英文,4000個(gè)漢字。可以看出使用nchar、nvarchar數(shù)據(jù)類(lèi)型時(shí)不用擔(dān)心輸入的字符是英文還是漢字,較為方便,但在存儲(chǔ)英文時(shí)數(shù)量上有些損失。(2)datetime和smalldatetimedat

10、etime:從1753年1月1日到9999年12月31日的日期和時(shí)間數(shù)據(jù),精確到百分之三秒。smalldatetime:從1900年1月1日到2079年6月6日的日期和時(shí)間數(shù)據(jù),精確到分鐘。(3)bitint、int、smallint、tinyint和bitbigint:從-2A63(-808)到2A63-1(807)的整型數(shù)據(jù)。int:從-2人31(-2,147,483,648)至U2A31-1(2,147,483,647)的整型數(shù)據(jù)。smallint:從-2人15(-32,768)至U2A15-1(32,767)的整數(shù)數(shù)據(jù)。tinyint:從0到255的整數(shù)數(shù)據(jù)。bit:1或0的整數(shù)數(shù)據(jù)。

11、(4)decimal和numeric這兩種數(shù)據(jù)類(lèi)型是等效的。都有兩個(gè)參數(shù):p(精度)和s(小數(shù)位數(shù))。p指定小數(shù)點(diǎn)左邊和右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大個(gè)數(shù),p必須是從1到38之間的值。s指定小數(shù)點(diǎn)右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大個(gè)數(shù),s必須是從0到p之間的值,默認(rèn)小數(shù)位數(shù)是0。(5)float和realfloat:從A308到人308之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。real:從人38到人38之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。在SQLServer中,real的同義詞為float(24)。數(shù)據(jù)庫(kù)定義到char類(lèi)型的字段時(shí),不知道大家是否會(huì)猶豫一下,到底選char、nchar、varchar、nvarchar、text、nte

12、xt中哪一種呢結(jié)果很可能是兩種,一種是節(jié)儉人士的選擇:最好是用定長(zhǎng)的,感覺(jué)比變長(zhǎng)能省些空間,而且處理起來(lái)會(huì)快些,無(wú)法定長(zhǎng)只好選用定長(zhǎng),并且將長(zhǎng)度設(shè)置盡可能地??;另一種是則是覺(jué)得無(wú)所謂,盡量用可變類(lèi)型的,長(zhǎng)度盡量放大些。鑒于現(xiàn)在硬件像蘿卜一樣便宜的大好形勢(shì),糾纏這樣的小問(wèn)題實(shí)在是沒(méi)多大意義,不過(guò)如果不弄清它,總覺(jué)得對(duì)不起勞累過(guò)度的CPU和硬盤(pán)。下面開(kāi)始了(以下說(shuō)明只針對(duì)SqlServer有效):1 、當(dāng)使用非unicode時(shí)慎用以下這種查詢:selectffromtwheref=Nxx原因:無(wú)法利用到索引,因?yàn)閿?shù)據(jù)庫(kù)會(huì)將f先轉(zhuǎn)換到unicode再和Nxx比較2 、char和相同長(zhǎng)度的varcha

13、r處理速度差不多(后面還有說(shuō)明)3 、varchar的長(zhǎng)度不會(huì)影響處理速度!(看后面解釋)4 、索引中列總長(zhǎng)度最多支持總為900字節(jié),所以長(zhǎng)度大于900的varchar、char和大于450的nvarchar,nchar將無(wú)法創(chuàng)建索引5 、text、ntext上是無(wú)法創(chuàng)建索引的6 、ORMapping中對(duì)應(yīng)實(shí)體的屬性類(lèi)型一般是以string居多,用char的非常少,所以如果按mapping的合理性來(lái)說(shuō),可變長(zhǎng)度的類(lèi)型更加吻合7、一般基礎(chǔ)資料表中的name在實(shí)際查詢中基本上全部是使用like%xx%這種方式,而這種方式是無(wú)法利用索引的,所以如果對(duì)于此種字段,索引建了也白建8、其它一些像remar

14、k的字段則是根本不需要查詢的,所以不需要索引9、varchar的存放和string是一樣原理的,即lengthblock這種方式,所以varchar的長(zhǎng)度和它實(shí)際占用空間是無(wú)關(guān)的10、對(duì)于固定長(zhǎng)度的字段,是需要額外空間來(lái)存放NULL標(biāo)識(shí)的,所以如果一個(gè)char字段中出現(xiàn)非常多的NULL,那么很不幸,你的占用空間比沒(méi)有NULL的大(但這個(gè)大并不是大太多,因?yàn)镹ULL標(biāo)識(shí)是用bit存放的,可是如果你一行中只有你一個(gè)NULL需要標(biāo)識(shí),那么你就白白浪費(fèi)1byte空間了,罪過(guò)罪過(guò)!),這時(shí)候,你可以使用特殊標(biāo)識(shí)來(lái)存放,如:NV11、同上,所以對(duì)于這種NULL查詢,索引是無(wú)法生效的,假如你使用了NULL標(biāo)

15、識(shí)替代的話,那么恭喜你,你可以利用到索引了12 、char和varchar的比較成本是一樣的,現(xiàn)在關(guān)鍵就看它們的索引查找的成本了,因?yàn)椴檎也呗远家粯樱虼藨?yīng)該比較誰(shuí)占用空間小。在存放相同數(shù)量的字符情況下,如果數(shù)量小,那么char占用長(zhǎng)度是小于varchar的,但如果數(shù)量稍大,則varchar完全可能小于char,而且要看實(shí)際填充數(shù)值的充實(shí)度,比如說(shuō)varchar(3)和char(3),那么理論上應(yīng)該是char快了,但如果是char(10)和varchar(10),充實(shí)度只有30%的情況下,理論上就應(yīng)該是varchar快了。因?yàn)関archar需要額外空間存放塊長(zhǎng)度,所以只要length(1-fillfactor)大于這個(gè)存放空間(好像是2字節(jié)),那么它就會(huì)比相同長(zhǎng)度的char快了。13 、nvarchar比varchar要慢上一些,而且對(duì)于非

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論