選擇數據類型與數據相匹配是數據庫設計中最為重要的部分,因為這種類型將會影響到RDBMS的效率與性能。所以,對RDBMS的數據類型選擇應給予足夠的重視。
這就是編寫本文的主要目的。表A將列舉了MySQL支持的絕大部分重要的數據類型,而MySQL是當前最為流行的免費RDBMS。文中還描述了何時與如何使用這些數據類型。這將有助於建立一個數據庫的合理設計。
表 A
數據類型
描述
字節
推薦使用
SMALLINT
整數,從-32000到 +32000范圍
2
存儲相對比較小的整數。
比如: 年紀,數量
INT
整數,從-2000000000 到 +2000000000 范圍
4
存儲中等整數
例如: 距離
BIGINT
不能用SMALLINT 或 INT描述的超大整數。
8
存儲超大的整數
例如: 科學/數學數據
FLOAT
單精度浮點型數據
4
存儲小數數據
例如:測量,溫度
DOUBLE
雙精度浮點型數據
8
需要雙精度存儲的小數數據
例如:科學數據
DECIMAL
用戶自定義精度的浮點型數據
變量;取決於精度與長度
以特別高的精度存儲小數數據。
例如:貨幣數額,科學數據
CHAR
固定長度的字符串
特定字符串長度(高達255字符)
存儲通常包含預定義字符串的變量
例如: 定期航線,國家或郵編
VARCHAR
具有最大限制的可變長度的字符串
變量; 1 + 實際字符串長度 (高達 255 字符)
存儲不同長度的字符串值(高達一個特定的最大限度).
例如:名字,密碼,短文標簽
TEXT
沒有最大長度限制的可變長度的字符串
Variable; 2 +聽 actual string length
存儲大型文本數據
例如: 新聞故事,產品描述
BLOB
二進制字符串
變量;2 + 實際字符串長度
存儲二進制數據
例如:圖片,附件,二進制文檔
DATE
以 yyyy-mm-dd格式的日期
3
存儲日期
例如:生日,產品滿期
TIME
以 hh:mm:ss格式的時間
3
存儲時間或時間間隔
例如:報警聲,兩時間之間的間隔,任務開始/結束時間
DATETIME
以yyyy-mm-ddhh:mm:ss格式結合日期和時間
8
存儲包含日期和時間的數據
例如:提醒的人,事件
TIMESTAMP
以yyyy-mm-ddhh:mm:ss格式結合日期和時間
4
記錄即時時間
例如:事件提醒器,“最後進入”的時間標記
YEAR
以 yyyy格式的年份
1
存儲年份
例如:畢業年,出生年
ENUM
一組數據,用戶可從中選擇其中一個
1或 2個字節
存儲字符屬性,只能從中選擇之一
例如:布爾量選擇,如性別
SET
一組數據,用戶可從中選擇其中0,1或更多。
從1到8字節;取決於設置的大小
存儲字符屬性,可從中選擇多個字符的聯合。
例如:多選項選擇,比如業余愛好和興趣。
對於一個完整的列表和詳細描述,可以查看MySQL manual。你也可以閱讀文章Choosing the Right Type for a Column。