SQL 用於各種資料庫的數據類型


Microsoft Access、MySQL 和 SQL Server 所使用的數據類型和範圍。


Microsoft Access 數據類型

數據類型 描述 存儲
Text 用於文本或文本與數字的組合。最多 255 個字元。
Memo Memo 用於更大數量的文本。最多存儲 65,536 個字元。注釋:無法對 memo 字段進行排序。不過它們是可搜索的。
Byte 允許 0 到 255 的數字。 1 位元組
Integer 允許介於 -32,768 與 32,767 之間的全部數字。 2 位元組
Long 允許介於 -2,147,483,648 與 2,147,483,647 之間的全部數字。 4 位元組
Single 單精確度浮點。處理大多數小數。 4 位元組
Double 雙精度浮點。處理大多數小數。 8 位元組
Currency 用於貨幣。支持 15 位的元,外加 4 位小數。提示:您可以選擇使用哪個國家的貨幣。 8 位元組
AutoNumber AutoNumber 字段自動為每條記錄分配數字,通常從 1 開始。 4 位元組
Date/Time 用於日期和時間 8 位元組
Yes/No 邏輯字段,可以顯示為 Yes/No、True/False 或 On/Off。在代碼中,使用常量 True 和 False (等價於 1 和 0)。注釋:Yes/No 字段中不允許 Null 值 1 比特
Ole Object 可以存儲圖片、音頻、視頻或其他 BLOBs(Binary Large OBjects)。 最多 1GB
Hyperlink 包含指向其他檔的鏈接,包括網頁。
Lookup Wizard 允許您創建一個可從下拉列表中進行選擇的選項列表。 4 位元組


MySQL 數據類型

在 MySQL 中,有三種主要的類型:Text(文本)、Number(數字)和 Date/Time(日期/時間)類型。

Text 類型:

數據類型 描述
CHAR(size) 保存固定長度的字串(可包含字母、數字以及特殊字元)。在括弧中指定字串的長度。最多 255 個字元。
VARCHAR(size) 保存可變長度的字串(可包含字母、數字以及特殊字元)。在括弧中指定字串的最大長度。最多 255 個字元。注釋:如果值的長度大於 255,則被轉換為 TEXT 類型。
TINYTEXT 存放最大長度為 255 個字元的字串。
TEXT 存放最大長度為 65,535 個字元的字串。
BLOB 用於 BLOBs(Binary Large OBjects)。存放最多 65,535 位元組的數據。
MEDIUMTEXT 存放最大長度為 16,777,215 個字元的字串。
MEDIUMBLOB 用於 BLOBs(Binary Large OBjects)。存放最多 16,777,215 位元組的數據。
LONGTEXT 存放最大長度為 4,294,967,295 個字元的字串。
LONGBLOB 用於 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 位元組的數據。
ENUM(x,y,z,etc.) 允許您輸入可能值的列表。可以在 ENUM 列表中列出最大 65535 個值。如果列表中不存在插入的值,則插入空值。

注釋:這些值是按照您輸入的順序排序的。

可以按照此格式輸入可能的值: ENUM('X','Y','Z')

SET 與 ENUM 類似,不同的是,SET 最多只能包含 64 個列表項且 SET 可存儲一個以上的選擇。

Number 類型:

數據類型 描述
TINYINT(size) 帶符號-128到127 ,無符號0到255。
SMALLINT(size) 帶符號範圍-32768到32767,無符號0到65535, size 默認為 6。
MEDIUMINT(size) 帶符號範圍-8388608到8388607,無符號的範圍是0到16777215。 size 默認為9
INT(size) 帶符號範圍-2147483648到2147483647,無符號的範圍是0到4294967295。 size 默認為 11
BIGINT(size) 帶符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0到18446744073709551615。size 默認為 20
FLOAT(size,d) 帶有浮動小數點的小數字。在 size 參數中規定顯示最大位數。在 d 參數中規定小數點右側的最大位數。
DOUBLE(size,d) 帶有浮動小數點的大數字。在 size 參數中規顯示定最大位數。在 d 參數中規定小數點右側的最大位數。
DECIMAL(size,d) 作為字串存儲的 DOUBLE 類型,允許固定的小數點。在 size 參數中規定顯示最大位數。在 d 參數中規定小數點右側的最大位數。

注意:以上的 size 代表的並不是存儲在資料庫中的具體的長度,如 int(4) 並不是只能存儲4個長度的數字。

實際上int(size)所占多少存儲空間並無任何關係。int(3)、int(4)、int(8) 在磁片上都是佔用 4 btyes 的存儲空間。就是在顯示給用戶的方式有點不同外,int(M) 跟 int 數據類型是相同的。

例如:

1、int的值為10 (指定zerofill)

int(9)顯示結果為000000010
int(3)顯示結果為010

就是顯示的長度不一樣而已 都是佔用四個位元組的空間

Date 類型:

數據類型 描述
DATE() 日期。格式:YYYY-MM-DD

注釋:支持的範圍是從 '1000-01-01' 到 '9999-12-31'

DATETIME() *日期和時間的組合。格式:YYYY-MM-DD HH:MM:SS

注釋:支持的範圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP() *時間戳。TIMESTAMP 值使用 Unix 紀元('1970-01-01 00:00:00' UTC) 至今的秒數來存儲。格式:YYYY-MM-DD HH:MM:SS

注釋:支持的範圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME() 時間。格式:HH:MM:SS

注釋:支持的範圍是從 '-838:59:59' 到 '838:59:59'

YEAR() 2 位或 4 位格式的年。

注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動把自身設置為當前的日期和時間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。


SQL Server 數據類型

String 類型:

數據類型 描述 存儲
char(n) 固定長度的字串。最多 8,000 個字元。 Defined width
varchar(n) 可變長度的字串。最多 8,000 個字元。 2 bytes + number of chars
varchar(max) 可變長度的字串。最多 1,073,741,824 個字元。 2 bytes + number of chars
text 可變長度的字串。最多 2GB 文本數據。 4 bytes + number of chars
nchar 固定長度的 Unicode 字串。最多 4,000 個字元。 Defined width x 2
nvarchar 可變長度的 Unicode 字串。最多 4,000 個字元。
nvarchar(max) 可變長度的 Unicode 字串。最多 536,870,912 個字元。
ntext 可變長度的 Unicode 字串。最多 2GB 文本數據。
bit 允許 0、1 或 NULL
binary(n) 固定長度的二進位字串。最多 8,000 位元組。
varbinary 可變長度的二進位字串。最多 8,000 位元組。
varbinary(max) 可變長度的二進位字串。最多 2GB。
image 可變長度的二進位字串。最多 2GB。

Number 類型:

數據類型 描述 存儲
tinyint 允許從 0 到 255 的所有數字。 1 位元組
smallint 允許介於 -32,768 與 32,767 的所有數字。 2 位元組
int 允許介於 -2,147,483,648 與 2,147,483,647 的所有數字。 4 位元組
bigint 允許介於 -9,223,372,036,854,775,808 與 9,223,372,036,854,775,807 之間的所有數字。 8 位元組
decimal(p,s) 固定精度和比例的數字。

允許從 -10^38 +1 到 10^38 -1 之間的數字。

p 參數指示可以存儲的最大位數(小數點左側和右側)。p 必須是 1 到 38 之間的值。默認是 18。

s 參數指示小數點右側存儲的最大位數。s 必須是 0 到 p 之間的值。默認是 0。

5-17 位元組
numeric(p,s) 固定精度和比例的數字。

允許從 -10^38 +1 到 10^38 -1 之間的數字。

p 參數指示可以存儲的最大位數(小數點左側和右側)。p 必須是 1 到 38 之間的值。默認是 18。

s 參數指示小數點右側存儲的最大位數。s 必須是 0 到 p 之間的值。默認是 0。

5-17 位元組
smallmoney 介於 -214,748.3648 與 214,748.3647 之間的貨幣數據。 4 位元組
money 介於 -922,337,203,685,477.5808 與 922,337,203,685,477.5807 之間的貨幣數據。 8 位元組
float(n) 從 -1.79E + 308 到 1.79E + 308 的浮動精度數字數據。

n 參數指示該字段保存 4 位元組還是 8 位元組。float(24) 保存 4 位元組,而 float(53) 保存 8 位元組。n 的默認值是 53。

4 或 8 位元組
real 從 -3.40E + 38 到 3.40E + 38 的浮動精度數字數據。 4 位元組

Date 類型:

數據類型 描述 存儲
datetime 從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 3.33 毫秒。 8 位元組
datetime2 從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 100 納秒。 6-8 位元組
smalldatetime 從 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度為 1 分鐘。 4 位元組
date 僅存儲日期。從 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes
time 僅存儲時間。精度為 100 納秒。 3-5 位元組
datetimeoffset 與 datetime2 相同,外加時區偏移。 8-10 位元組
timestamp 存儲唯一的數字,每當創建或修改某行時,該數字會更新。timestamp 值基於內部時鐘,不對應真實時間。每個表只能有一個 timestamp 變數。  

其他數據類型:

數據類型 描述
sql_variant 存儲最多 8,000 位元組不同數據類型的數據,除了 text、ntext 以及 timestamp。
uniqueidentifier 存儲全局唯一識別字 (GUID)。
xml 存儲 XML 格式化數據。最多 2GB。
cursor 存儲對用於資料庫操作的指針的引用。
table 存儲結果集,供稍後處理。