程式語法SQL Data Types 資料型別

SQL Data Types 資料型別

SQL Server (Transact-SQL) 基本幾種資料型別,資料類型指定物件所能保留之資料類型的屬性。類型包括整數、精確位數、浮點數、字元、貨幣資料、日期和時間資料、二進位字串等。

數值資料 (Numeric Data)

數值型態有 integer, float, money 使用數值資料能夠搭配內建的數值函數來做資料處理該數值欄位。

字串(元)資料 (Character & Strings Data)

儲存字元或符號之資料型別。

日期/時間資料 (Date Data)

記錄日期/時間的資料型別,類型 Date, Time, Timestamp

布林值 (Boolean Data)

True、False, Yes、No, 1、0


整數資料

資料型別位元組資料範圍
Tinyint1 位元組 (Byte)0 ~ 255
Smallint2 位元組 (Byte)-2^15 (-32,768) 到 2^15-1 (32,767)
Int4 位元組 (Byte)-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647)
Bigint8 位元組 (Byte)-2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)
大於 2,147,483,647 的整數常數會轉換
decimal 資料類型,而不是 bigint 資料類型。
Bit1 位元組 (Byte)0 , 1 , Null
字串值 True 和 False 可以轉換成 bit 值
True 轉換成 1
False 轉換成 0。

精確位數與浮點數

資料型別位元組資料範圍
float8 位元組 (Byte)-1.79E+308 到 -2.23E-308、0
2.23E-308 到 1.79E+308
real4 位元組 (Byte)-3.40E+38 到 -1.18E-38、0
1.18E-38 到 3.40E+38
numeric(有效位數, 小數)視精確度而定-10^38 +1 ~ 10^38 -1
decimal(有效位數, 小數)視精確度而定-10^38 +1 ~ 10^38 -1
numeric, decimal
(具有固定有效位數和小數位數的數值資料類型)
有效位數儲存體
1 ~ 95 位元組 (Byte)
10 ~ 199 位元組 (Byte)
20 ~ 2813 位元組 (Byte)
29 ~ 3817 位元組 (Byte)

字元、字串 - Unicode 字串

資料型別位元組資料範圍
char(n)1字元 1 位元組 (Byte)1 ~ 8000 字元
varchar(n)1字元 1 位元組 (Byte)1 ~ 8000 字元
varchar(max)變動長度 max = 2GB1 ~ 2^31 -1 字元
text變動長度 max = 2GB1 ~ 2^31 -1 字元

Unicode 字串

nchar(n)1字元 2 位元組 (Byte)1 ~ 4000 字元 固定長度
nvarchar(n)1字元 2Byte1 ~ 4000 字元 可變長度
nvarchar(max)1字元 2 位元組 (Byte)
變動長度 max = 2GB
1 ~ 2^ -1 字元 (可變長度大型文字資料)
ntext1字元 2 位元組 (Byte)
變動長度 max = 2GB
1 ~ 2^30 -1 字元

Binary 二進位字串

資料型別位元組資料範圍
binary(n)固定長度 8000 Bytes1 ~ 8000 Bytes (儲存體大小是 n 位元組)
varbinary(n)變動長度1 ~ 8000 Bytes
varbinary(max)變動長度 max = 2GB1 ~ 2^31 -1 Bytes
(儲存體大小是輸入資料的實際長度再加上 2 位元組)
image變動長度 max = 2GB0 到 2^31-1 (2,147,483,647)
位元組的可變長度二進位資料

日期 - 時間 - 貨幣 - Timestamp

資料型別位元組資料範圍
datetime8 位元組(字元長度最小 19 個位置,最大 23 個位置)1753 年 1 月 1 日到 9999 年 12 月 31 日
時間範圍 00:00:00 到 23:59:59.997
2012-06-30 06:30:02.612
datetime2(n) 6 個位元組代表有效位數小於 3,而 7 個位元組則代表有效位數是 3 和 4。所有其他有效位數則需要 8 個位元組西元 1 年 1 月 1 日到西元 9999 年 12 月 31 日
時間範圍 00:00:00 到 23:59:59.9999999
2012-06-30 06:30:02.612
smalldatetime4 位元組 (Byte) 1900:01:01 到 2079:06:06
1900 年 1 月 1 日到 2079 年 6 月 6 日
2012-09-23 17:23
datetimeoffset(n)*10 Bytes(固定)預設值
最小 26 位數 (YYYY-MM-DD hh:mm:ss {+|-}hh:mm)
最大 34 位數 (YYYY-MM-DD hh:mm:ss. nnnnnnn {+|-}hh:mm)
0001-01-01 到 9999-12-31
西元 1 年 1 月 1 日 到西元 9999 年 12 月 31 日

SQL Server 2005 資料庫引擎用兩個 4 位元組的整數內部存儲 datetime 資料類型的值。
第一個 4 位元組存儲「基礎日期」即 1900 年 1 月 1 日、之前或之後的天數。基礎日期是系統參照日期。
另外一個 4 位元組存儲天的時間,以午夜後經過的 1/300 秒數表示。

smalldatetime 資料類型存儲天的日期和時間,但精確度低於 datetime。
資料庫引擎將 smalldatetime 值存儲為兩個 2 位元組的整數。第一個 2 位元組存儲 1900 年 1 月 1 日後的天數。
另外一個 2 位元組存儲午夜後經過的分鐘數。


Money 金融貨幣/精確數值

money8 位元組 (Byte)-2^63 ~ 2^63 -1 小數4位
-922,337,203,685,477.5808 到 922,337,203,685,477.5807
smallmoney4 位元組 (Byte)-2^31 ~ 2^31 -1 小數4位
-214,748.3648 到 214,748.3647

Timestamp 時間戳記

timestamp8 位元組 (Byte)8 Bytes 的 16 進位值
uniqueidentifier16 位元組 (Byte)16 Bytes 的 16 進位值

Timestamp 通常用來作為版本戳記資料表資料列的機制。儲存體大小是 8 位元組。timestamp 資料類型只是會遞增的數字,因此不會保留日期或時間。記錄日期或時間建議使用 datetime 資料類型。TimestampRowversion 資料類型的同義字依照資料類型相同。


資料類型 (Transact-SQL)

msdn.microsoft.com