資料表是由多個列組成,建立表時必須明确每個列的資料類型,以下列舉SQL Server常見資料類型的使用規則,友善查閱。
整數類型
int | 存儲範圍是-2,147,483,648到2,147,483,647之間的整數,主鍵列常設定此類型。 (每個數值占用 4位元組) |
smallint | 存儲範圍是-32,768 到 32,767 之間的整數,用來存儲限定在特定數值範圍内的資料。 (每個數值占用 2 位元組) |
tinyint | 存儲範圍是0到255 之間的整數,用來存儲有限數目的數值。 (每個數值占用 1 位元組) |
bigint | 存儲範圍是-9,223,372,036,854,775,808到 9,223,372,036,854,775,807之間的整數。 (每個數值占用 8 位元組) |
bit | 值隻能是0或1,當輸入0以外的其他值時,系統均把它們當1看待。常用來表示真假、男女等二值選擇。 |
數值類型
decimal(p,s) | p 為精度(有效位),表示可儲存數值的最大位數,小數點左右兩側都包括在内,預設最大位為38 位;s為小數位數,辨別小數點後 面所能儲存的最大位數,預設最小位為0位。如:123.45,則 p=5,s=2(記憶體大小取決于精度p) |
numeric(p,s) | numeric 和 decimal 是功能相同的,同是用來儲存精度可變的浮點型資料。 |
float | 浮點型,它是一種近似數值類型,float(n)可儲存1-53的可變精度浮點數值。 (記憶體大小取決于精度n) |
money | 貨币型,能存儲從-9220 億到 9220 億之間的資料,精确到小數點後四位。 (每個數值占用 8 位元組) |
日期時間
datetime | 儲存有效日期範圍是1753/1/1~9999/12/31,可精準到3.33毫秒。(每個數值占用 8 位元組) |
smalldatetime | 儲存有效日期範圍是1900/1/1~2079/6/6,精确到分鐘。(每個數值占用 4 位元組) |
二進制類型
image | 雖然類型名為image, 但是并不意味着隻能儲存圖檔二進制資料,實際上它可以儲存任何二進制資料。 |
字元串類型
char(m) | 固定長度字元串,長度為 m。 |
nchar(m) | 國際化固定長度字元串,長度為 m。 |
varchar(m) | 可變長度字元串,最大長度為m,且必須是一個介于 1 和 8,000 之間的數值。 |
nvarchar(m) | 國際化可變長度字元串,最大長度為m, 且必須是一個介于 1 和 4,000 之間的數值。 |
text | 可變長度字元串,最大長度為 231 - 1個位元組。 |
ntext | 國際化可變長度字元串,最大長度為 230 - 1個字元。 |
國際化就是通用與标準。char、varchar、text儲存的字元是基于ASCII編碼格式,對于其他編碼格式的字元可能會造成存儲問題。 Unicode 字元集(萬國碼)就是為了解決字元集這種不相容的問題而産生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。nchar、 nvarchar、ntext存儲的正是Unicode編碼格式的字元。是以一般來說,如果含有中文字元,用nchar、nvarchar、ntext, 如果隻含英文字元,就用char、varchar、text。 |