SQL2000裡的資料型別

2021-04-13 02:18:42 字數 2297 閱讀 4602

(1)char、varchar、text和nchar、nvarchar、ntext

char和varchar的長度都在1到8000之間,它們的區別在於char是定長字元資料,而varchar是變長字元資料。所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元資料則不會以空格填充。text儲存可變長度的非unicode資料,最大長度為2^31-1(2,147,483,647)個字元。

後面三種資料型別和前面的相比,從名稱上看只是多了個字母"n",它表示儲存的是unicode資料型別的字元。寫過程式的朋友對unicode應該很了解。字元中,英文本元只需要乙個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文本元也是用兩個位元組表示。nchar、nvarchar的長度是在1到4000之間。和char、varchar比較:nchar、nvarchar則最多儲存4000個字元,不論是英文還是漢字;而char、varchar最多能儲存8000個英文,4000個漢字。可以看出使用nchar、nvarchar資料型別時不用擔心輸入的字元是英文還是漢字,較為方便,但在儲存英文時數量上有些損失。

(2)datetime和**alldatetime

datetime:從2023年1月1日到2023年12月31日的日期和時間資料,精確到百分之三秒。

**alldatetime:從2023年1月1日到2023年6月6日的日期和時間資料,精確到分鐘。

(3)bitint、int、**allint、tinyint和bit

bigint:從-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型資料。

int:從-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型資料。

**allint:從-2^15(-32,768)到2^15-1(32,767)的整數資料。

tinyint:從0到255的整數資料。

bit:1或0的整數資料。

(4)decimal和numeric

這兩種資料型別是等效的。都有兩個引數:p(精度)和s(小數字數)。p指定小數點左邊和右邊可以儲存的十進位制數字的最大個數,p必須是從 1到38之間的值。s指定小數點右邊可以儲存的十進位制數字的最大個數,s必須是從0到p之間的值,預設小數字數是0。

(5)float和real

float:從-1.79^308到1.79^308之間的浮點數字資料。

real:從-3.40^38到3.40^38之間的浮點數字資料。在sql server中,real的同義詞為float(24)。

資料庫定義到char型別的字段時,不知道大家是否會猶豫一下,到底選char、nchar、varchar、nvarchar、text、ntext中哪一種呢?結果很可能是兩種,一種是節儉人士的選擇:最好是用定長的,感覺比變長能省些空間,而且處理起來會快些,無法定長只好選用定長,並且將長度設定盡可能地小;另一種是則是覺得無所謂,盡量用可變型別的,長度盡量放大些。

鑑於現在硬體像蘿蔔一樣便宜的大好形勢,糾纏這樣的小問題實在是沒多大意義,不過如果不弄清它,總覺得對不起勞累過度的cpu和硬碟。

下面開始了(以下說明只針對sqlserver有效):

1、當使用非unicode時慎用以下這種查詢:

select f from t where f = n'xx'

14、 如何修改mssql中text型別的長度及用jdbc插入該型別資料的方法 :

剛建立text型別的時候,會發現預設情況下是它的長度是16,在mssql裡面如何也改不了它的大小了。 

可以通過以下的方法來修改該型別的長度:

sp_tableoption testtable(《---此處為要修改表的名字), 'text in row', '1000'(《---此處為長度,值只能是24~7000)

如果用jdbc來插入該型別的值的時候。應該先將檔案轉換成string型別,在通過preparedstatement中的

setstring()方法來插入資料。

總結陳詞:

1、如果資料量非常大,又能100%確定長度且儲存只是ansi字元,那麼char

2、能確定長度又不一定是ansi字元或者,那麼用nchar;

3、不確定長度,要查詢且希望利用索引的話,用nvarchar型別吧,將它們設到400;

4、不查詢的話沒什麼好說的,用nvarchar(4000)

5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是一種額外說明,等於告訴別人說,我一定需要長度為x位的資料 

SQL2000裡的資料型別

近來在做,有時候真弄不清 sql2000裡的 資料型別,所以摘了這篇文章。1 char varchar text和nchar nvarchar ntext char和varchar的長度都在1到8000之間,它們的區別在於char是定長字元資料,而varchar是變長字元資料。所謂定長就是長度固定的...

SQL2000裡的資料型別

近來在做資料庫 設計,有時候真弄不清sql2000裡的資料型別,所以摘了這篇文章。1 char varchar text和nchar nvarchar ntext char和varchar的長度都在1到8000之間,它們的區別在於char是定長字元資料,而varchar是變長字元資料。所謂定長就是長...

SQL2000裡的資料型別

sql2000裡的資料型別 1 char varchar text和nchar nvarchar ntext char和varchar的長度都在1到8000之間,它們的區別在於char是定長字元資料,而varchar是變長字元資料。所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以...