机房合作--那些数据类型
一、字符類型:char、nchar、varchar和nvarchar
1.定義:
char:??? 固定長(zhǎng)度,存儲(chǔ)ANSI字符,不足的補(bǔ)英文半角空格。
nchar:?? 固定長(zhǎng)度,存儲(chǔ)Unicode字符,不足的補(bǔ)英文半角空格
varchar:? 可變長(zhǎng)度,存儲(chǔ)ANSI字符,根據(jù)數(shù)據(jù)長(zhǎng)度自動(dòng)變化。
nvarchar: 可變長(zhǎng)度,存儲(chǔ)Unicode字符,根據(jù)數(shù)據(jù)長(zhǎng)度自動(dòng)變化。
nvarchar(n) :包含 n個(gè)字符的可變長(zhǎng)度 Unicode 字符數(shù)據(jù)。n 的值必須介于 1? 與? 4,000 之間。字節(jié)的存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍。所輸入的數(shù)據(jù)字符長(zhǎng)度可以為零。
varchar(n):長(zhǎng)度為 n 個(gè)字節(jié)的可變長(zhǎng)度且非 Unicode的字符數(shù)據(jù)。n 必須是一個(gè)介于?? 1 和 8,000之間的數(shù)值。存儲(chǔ)大小為輸入數(shù)據(jù)的字節(jié)的實(shí)際長(zhǎng)度,而不是 n 個(gè)字節(jié)。所輸入的數(shù)據(jù)字符長(zhǎng)度可以為零。
注意:ANSI主要是以單字節(jié)來存儲(chǔ)數(shù)據(jù),一般適合英文。而我們常用的漢字需要用兩個(gè)字節(jié)來存儲(chǔ),所以就要使用unicode的數(shù)據(jù)類型,不然讀取出來的數(shù)據(jù)可能會(huì)亂碼。
2.區(qū)別:
- ?從存儲(chǔ)方式上,nvarchar是按字符存儲(chǔ)的,而 varchar是按字節(jié)存儲(chǔ)的;
- ?從存儲(chǔ)量上考慮, varchar比較節(jié)省空間,因?yàn)榇鎯?chǔ)大小為字節(jié)的實(shí)際長(zhǎng)度,而 nvarchar是雙字節(jié)存儲(chǔ);
- ?在使用上,如果存儲(chǔ)內(nèi)容都是英文字符而沒有漢字等其他語言符號(hào),建議使用varchar;含有漢字的使用nvarchar,因?yàn)? nvarchar是使用Unicode編碼,即統(tǒng)一的字符編碼標(biāo)準(zhǔn),會(huì)減少亂碼的出現(xiàn)幾率;
- ?如果你做的項(xiàng)目可能涉及不同語言之間的轉(zhuǎn)換,建議盡量使用nvarchar。
3.nvarchar優(yōu)點(diǎn):判斷字符串的時(shí)候可以不需要考慮中英文兩種字符的差別,可以避免程序中亂碼的問題。缺點(diǎn):存儲(chǔ)英文字符會(huì)增大一倍的存儲(chǔ)空間.但是在存儲(chǔ)代價(jià)已經(jīng)很低廉的情況下,優(yōu)先考慮兼容性會(huì)給你帶來更多好處的,效率沒有varchar高。
4.字符中,英文字符只需要一個(gè)字節(jié)存儲(chǔ)就足夠了,但漢字眾多,需要兩個(gè)字節(jié)存儲(chǔ),英文與漢字同時(shí)存在時(shí)容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產(chǎn)生的,它所有的字符都用兩個(gè)字節(jié)表示,即英文字符也是用兩個(gè)字節(jié)表示。
5.tips:
如果可以確定存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,而且不包中文的,可以選擇char類型;
如果可以確定存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,但可能包括中文,可以選擇nchar類型;
如果不確定存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,存儲(chǔ)只有英文、數(shù)字的最好用varchar;
如果不確定存儲(chǔ)的數(shù)據(jù)長(zhǎng)度,也有可能有中文,可以選擇nvarchar類型。
二、整型:int與bigint
int 普通大小的整數(shù),帶符號(hào)的范圍是-2147483648到2147483647。
bigint 帶符號(hào)的范圍是-9223372036854775808到bai9223372036854775807。
由此可以看出,假如我要在數(shù)據(jù)庫(kù)里存一個(gè)11位的手機(jī)號(hào),用int是不可以的,存數(shù)據(jù)時(shí)會(huì)溢出。另外存手機(jī)號(hào)的話,最好的還是用char,為什么呢?因?yàn)槭謾C(jī)號(hào)的本質(zhì)是字符串而不是數(shù)字,它只是恰巧長(zhǎng)得像數(shù)字而已;而且字符串可以通過LINK去匹配,查詢很方便,同時(shí)字符串可以去匹配尾號(hào)或者首號(hào)。
三、金錢類型:decimal(6,0)
它的含義是:可儲(chǔ)存的最大十進(jìn)位數(shù)總數(shù)為6,小數(shù)位數(shù)為0,也就是說最后的金錢數(shù)會(huì)精確到整數(shù),例如:元。
四、日期類型:datatime與smalldatatime
這兩個(gè)都是表示日期類型的數(shù)據(jù),但是又有些小小的不同:
| datetime | 1753 年 1 月 1 日到 9999 年 12 月 31 日 | 3.33 毫秒 |
| smalldatetime | 1900 年 1 月 1 日到 2079 年 6 月 6 日 | 1 分鐘 |
總結(jié)
以上是生活随笔為你收集整理的机房合作--那些数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机房合作--那些图
- 下一篇: 机房合作--gitee的使用