close

1. 數字類型(Numeric Types)

類型

型別

範圍

位元數

備註

精確數值

(整數)

bit

01null

1 byte

字串值truefalse可以轉換成bit值,即true會轉換成1;而false會轉換成0

tinyint

0~28-1 (0~255)

1 byte

 

smallint

-215~215-1 (-32,768~32,767)

2 bytes

 

int

(/integer)

-231~231-1 (-2,147,483,648~2,147,483,647)

4 bytes

 

bigint

-263~263-1

8 bytes

 

精確數值

(小數)

numeric[(p[,s])]

-1038+1~1038-1

5~17 bytes

  1. 1.   numericdecimal的功能相同。
  2. 2.   p (有效位數):小數點左右兩側的位數和。p值必須是1~38之間的數值。
  3. 3.   s (小數位數):表示小數位數。小數位數必須是0 <= s <= p的值。只有在指定了有效位數時,才能指定小數位數。
  4. 4.   XXXX.yyy這可用numeric(7, 3)表示。
  5. 5.   numeric(18, 0)為預設值。

decimal[(p[,s])]

-1038+1~1038-1

5~17 bytes

精確數值

(貨幣)

money

-263~263-1 小數4

(-922,337,203,685,477.5808 922,337,203,685,477.5807)

8 bytes

 

smallmoney

-231~231-1 小數4

(-214748.3648~214748.3647)

4 bytes

 

近似數值

(小數)

float[(n)]

3.40E38~1.18E-3801.18E-38~3.40E38

n:1~24 à4 byte

n:25~53 à8 byte

  1. 1.     n 是用來儲存float數之尾數的位元數目,即規定有效位數和儲存體大小。
  2. 2.     n值必須是在1~53之間。
  3. 3.     n的預設值為53

real

1.79E308~2.23E-30802.23E-308~1.79E308

4 bytes

同於 float(24)

※注意:

(1)       需要精確數值行為時請勿使用floatreal這些資料類型,例如財務應用程式、牽涉到四捨五入的作業或者進行相等檢查作業時。

(2)       避免在 WHERE 子句的搜尋條件中使用 float real 資料行,尤其是 = <> 運算子。最好將 float real 資料行限制為 > < 比較。

 

2. 文字類型(Character Types)

類型

型別

範圍

位元數

備註

Unicode

char(size)

固定長度1~8000字元,區分全半型

1字元  1 bytes

例如:在char(5)之下,abcabcde會以"abc空白空白""abcde”等方式儲存。

varchar(size)

變動長度1~8000字元,區分全半型

1字元  1 bytes

例如:在varchar(5)之下,abcabcde會以"abc""abcde”等方式儲存。

varchar(max)

1~231-1字元

0 ~ 2 GB

 

Unicode

nchar(size)

固定長度1~4000字元,不區分全半型,為Unicode編碼

1字元  2 bytes

 

nvarchar(size)

變動長度1~4000字元,不區分全半型,為Unicode編碼

1字元  2 bytes

 

nvarchar(max)

1~231-1字元,為Unicode編碼

0 ~ 2 GB

 

※注意:

(1)       在未來的Microsoft SQL Server版本中,將移除ntexttextimage等資料類型。請避免在新的開發工作中使用這些資料類型,並修改目前在使用這些資料類型的應用程式,建護改用nvarchar(max)varchar(max)varbinary(max)

 

3. 日期和時間類型(Date and Time Types)

類型

型別

範圍

位元數

備註

日期和
時間類型

datetime

1753/01/01 00:00:00.000 9999/12/31 23:59:59.999
(精確度:0.00333秒)

8 bytes

例如:
2008-11-27 08:08:08.888

smalldatetime

1900/01/01 00:00 2079/06/06 23:59
(精確度:1分)

4 bytes

例如:
2008-11-24 15:11

datetime2(size)

0001/01/01 00:00:00.0000000 9999/12/31 23:59:59.9999999
(精確度:n:0~710-n秒)

6~8 bytes

格式:
YYYY-MM-DD HH:MI:SS.NNNNNNN

date

0001/01/01 ~ 9999/12/31 (精確度:1天)

3 bytes

格式:YYYY-MM-DD

time(size)

00:00:00.0000000 23:59:59.9999999
(精確度:n:0~710-n秒)

3~5 bytes

格式:HH:MI:SS.NNNNNNN

datetimeoffset(size)

0001/01/01 00:00:00.0000000 ~ 9999/12/31 23:59:59.9999999
(以UTC為單位)

8~10 bytes

格式:
YYYY-MM-DD HH:MI:SS.NNNNNNN+|-HH:MI

 

4. 二進位資料類型(Binary Types)

類型

型別

範圍

位元數

備註

二進位
資料

binary(size)

固定長度1~8000 bytes

固定長度 8000 bytes,不足自動補上 0x00

使用於「資料行資料項目的大小不一致」時。

varbinary(size)

變動長度1~8000 bytes

變動長度

使用於「資料行資料項目的大小變化相當大」時。

varbinary(max)

1~231-1 bytes

0 ~ 2 GB

使用於「資料行資料項目超過8,000位元組」。

地理位置空間資料

geometry

利用CLR實作資料類型,適用平面座標系統的資料

 

 

geography

利用CLR實作資料類型,適用經緯度座標系統的資料

 

 

※注意:

(1)       在儲存如安全性識別碼(SID)、全域唯一識別碼(GUID)或可以儲存成十六進位縮寫的複數時,就可以使用「二進位資料」。

(2)       當資料定義或變數宣告陳述式中沒有指定size時,預設為1。當size不是利用CAST函數來指定時,預設為30

 

5. 其他類型(Other Types)

型別

範圍

位元數

備註

xml

xml資料

0 ~ 2 GB

可以使用xml資料類型方法(如:query()value()exist()modify()nodes())來查詢儲存在xml類型之變數或資料行中的XML執行個體。

uniqueidentifier

全域唯一識別碼(GUID)

16 bytes

  1. 1.    GUID 是一種唯一的二進位數字;全世界的電腦都不會產生重複的GUID值。
  2. 2.    GUID 的主要用途是在有許多站台與許多電腦的網路上指派一個唯一識別碼。

timestamp

資料庫內自動產生唯一的二進位值,用於指出資料庫中發生資料修改的「相對順序」。

8 bytes

 

hierarchyid

利用CLR實作資料類型,用於管理具有階層式結構的資料及資料表。

 

 

※注意:

(1)       請勿在「索引鍵」中使用timestamp資料行 (尤其是主索引鍵),因為每次修改資料列時,timestamp值就會變更。

(2)       若要記錄資料表中發生資料修改的時間,請使用datetime2smalldatetime資料類型來記錄事件和觸發程序,以便在發生修改時,自動更新這些值。

(3)       timestamp rowversion資料類型的同義字。在 DDL 陳述式中,請盡可能利用rowversion來取代timestamp

(4)       timestamp語法已被取代。未來的Microsoft SQL Server版本將移除這項功能。請避免在新的開發工作中使用這項功能,並修改目前使用這項功能的應用程式。

 

6. 參考資料

ü   資料類型 (Database Engine)

ü   VITO SQL 學習筆記-資料型別

ü   黃昏的甘蔗 - SQL Data Type資料型別

 

 

 

arrow
arrow
    創作者介紹
    創作者 Elsa 的頭像
    Elsa

    Elsaの程式學習筆記

    Elsa 發表在 痞客邦 留言(1) 人氣()