SQL server資料型別詳解

2021-07-04 09:01:02 字數 3913 閱讀 9666

1. 字元資料型別

字元資料型別包括varchar

、char

、nvarchar

、nchar

、text

以及ntext。

varchar和

char

型別的主要區別是資料填充

。如果有一表列名為firstname

且資料型別為

varchar(20)

,同時將值

brian

儲存到該列中,則物理上只儲存

5個位元組。但如果在資料型別為

char(20)

的列中儲存相同的值,將使用全部

20個位元組。

sql將插入拖尾空格來填滿

20個字元。

如果要節省空間,那麼為什麼還使用char

資料型別呢?

使用varchar

資料型別會稍增加一些系統開銷。例如,如果要儲存兩字母形式的州名縮寫,則最好使用

char(2)

列。儘管有些

dba認為應最大可能地節省空間,但一般來說,好的做法是在組織中找到乙個合適的閾值,並指定低於該值的採用

char

資料型別,反之則採用

varchar

資料型別。通常的原則是,任何小於或等於5

個位元組的列應儲存為

char

資料型別,而不是

varchar

資料型別。如果超過這個長度,使用

varchar

資料型別的好處將超過其額外開銷。

nvarchar資料型別和

nchar

資料型別的工作方式與對等的

varchar

資料型別和

char

資料型別相同,

但這兩種資料型別可以處理國際性的unicode

字元。它們需要一些額外開銷。以unicode形式儲存的資料為乙個字元佔兩個位元組。如果要將值brian

儲存到nvarchar

列,它將使用

10個位元組;而如果將它儲存為

nchar(20)

,則需要使用

40位元組。由於這些額外開銷和增加的空間,應該避免使用

unicode

列,除非確實有需要使用它們的業務或語言需求。

接下來要提的資料型別是text

和ntext

。text資料型別用於在資料頁內外儲存大型字元資料

。應盡可能少地使用這兩種資料型別,因為可能影響效能但可在單行的列中儲存多達2gb

的資料。與

text

資料型別相比,更好的選擇是使用varchar(max)

型別,因為將獲得更好的效能。另外,text

和ntext

資料型別在

sql server

的一些未來版本中將不可用,因此現在開始還是最好使用varchar(max)

和nvarchar(max)

而不是text

和ntext

資料型別。

表1-1

列出了這些型別,對其作了簡單描述,並說明了要求的儲存空間。

2. 精確數值資料型別

數值資料型別包括bit

、tinyint

、smallint

、int

、bigint

、numeric、

decimal

、money

、float

以及real

。這些資料型別都用於儲存不同型別的數字值。第一種資料型別

bit只儲存0或

1,在大多數應用程式中被轉換為

true

或false

。bit

資料型別非常適合用於開關標記,且它只佔據乙個位元組空間。其他常見的數值資料型別如表

1-2所示。

3. 近似數值資料型別

這個分類中包括資料型別float

和real

。它們用於表示浮點資料。但是,由於它們是近似的,因此不能精確地表示所有值。

float(n)中的

n是用於儲存該數尾數

(mantissa)

的位數。

sql server

對此只使用兩個值。如果指定位於

1~24

之間,sql

就使用24

。如果指定

25~53

之間,sql

就使用53

。當指定

float()時(

括號中為空

),預設為53。

表1-3

列出了近似數值資料型別,對其進行簡單描述,並說明了要求的儲存空間。

4. 二進位制資料型別

如varbinary

、binary

、varbinary(max)

或image

等二進位制資料型別

用於儲存二進位制資料,如圖形檔案、word

文件或***

檔案。其值為十六進製制的0x0~0xf

。image

資料型別可在資料頁外部儲存最多

2gb的檔案。image資料型別的首選替代資料型別是

varbinary(max)

,可儲存最多

8kb的二進位制資料,其效能通常比image

資料型別好。

sql server 2008

的新功能是可以在作業系統檔案中通過

filestream

儲存選項儲存

varbinary(max)

物件。這個選項將資料儲存為檔案,同時不受

varbinary(max)

的2gb

大小的限制。

表1-4

列出了二進位制資料型別,對其作了簡單描述,並說明了要求的儲存空間。

5. 日期和時間資料型別

datetime和

smalldatetime

資料型別用於儲存日期和時間資料。

smalldatetime為

4位元組,儲存

2023年1

月1日~2023年6

月6日之間的時間,且

只精確到最近的分鐘

。datetime

資料型別為

8位元組,儲存

2023年1

月1日~2023年12

月31日之間的時間,且

精確到最近的3.33毫秒。

sql server 2008有

4datetime2

、dateoffset

、date

和time

。通過sql server

聯機叢書可找到使用這些資料型別的示例。

datetime2資料型別是

datetime

資料型別的擴充套件,有著更廣的日期範圍。時間總是用時、分鐘、秒形式來儲存。可以定義末尾帶有可變引數的

datetime2

資料型別--如

datetime2(3)

。這個表示式中的

3表示儲存時秒的小數精度為

3位,或

0.999

。有效值為

0~9之間,預設值為3。

datetimeoffset資料型別和

datetime2

資料型別一樣,帶有時區偏移量。該時區偏移量最大為+

/-14

小時,包含了

utc偏移量,因此可以合理化不同時區捕捉的時間。

date資料型別只儲存日期,這是一直需要的乙個功能。而

time

資料型別只儲存時間。它也支援

time(n)

宣告,因此可以控制小數秒的粒度。與

datetime2

和datetimeoffset

一樣,n

可為0~7

之間。

表1-5

列出了日期

/時間資料型別,對其進行簡單描述,並說明了要求的儲存空間。

SQL SERVER 資料型別詳解

資料型別 型別 描 述 bit 整型 bit 資料型別是整型,其值只能是0 1或空值。這種資料型別用於儲存只有兩種可能值的資料,如yes 或no true 或fa lse on 或off int 整型 int 資料型別可以儲存從 231 2147483648 到231 2147483 647 之間的...

SQL SERVER 資料型別詳解

資料型別 型別 描 述 bit整型 bit 資料型別是整型,其值只能是0 1或空值。這種資料型別用於儲存只有兩種可能值的資料,如yes 或no true 或fa lse on 或off int 整型 int 資料型別可以儲存從 231 2147483648 到231 2147483 647 之間的整...

sql server 資料型別詳解

資料型別 型別 描 述 bit整型bit 資料型別是整型,其值只能是0 1或空值。這種資料型別用於儲存只有兩種可能值的資料,如yes 或no true 或fa lse on 或off int整型 int 資料型別可以儲存從 231 2147483648 到231 2147483 647 之間的整數。...