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 之間的整數。...