MySQL學習之資料類型
一、資料類型
1.數實值型別 -- TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、 DECIMAL
2.時間類型 -- DATE、DATETIME、TIMESTAMP
3.字串類型 – CHAR、VARCHAR、TEXT
4.特有類型 -- ENUM、SET
字串區分大小寫 -- VARBINARY
資料類型 |
類型分類 |
表達的範圍 |
儲存需求 |
TINYINT[(M)] [UNSIGNED] [ZEROFILL] |
數值整型 |
-128到127 或 0到255 |
1個位元組 |
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] |
-32768到32767 或 0到65535 |
2個位元組 |
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] |
-8388608到8388607 或 0到16777215 |
3個位元組 |
INT[(M)] [UNSIGNED] [ZEROFILL] |
-2147483648到2147483647 或 0到4294967295 |
4個位元組 |
BIGINT[(M)] [UNSIGNED] [ZEROFILL] |
-9223372036854775808到9223372036854775807 或 0到18446744073709551615 |
8個位元組 |
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] |
數值混合型 |
整數最大位元(M)為65,小數位元最大(D)為30 |
變長 |
DATE |
日期類型 |
YYYY-MM-DD 精確到天 |
3個位元組 |
DATETIME |
YYYY-MM-DD HH:MM:SS(1001年到9999年的範圍) |
8個位元組 |
TIMESTAMP |
YYYY-MM-DD HH:MM:SS(1970年到2037年的範圍) |
4個位元組 |
ENUM |
枚舉類型 |
1到65535個中繼資料 |
1個位元組或2個位元組 |
SET |
集合類型 |
1到64個中繼資料 |
1,2,3,4或8個位元組 |
CHAR(M) |
字串類型 |
0(建議CHAR(1)外,超過此長度的統一用VARCHAR(M)替代) |
M*N個位元組,其中N大小由字元集編碼,以及是否為中文還是字母數字等有關係 |
VARCHAR(M) |
0個字元 |
TEXT |
64K個位元組 |
所有變長字串全部使用 VARCHAR 類型,類似於狀態,有限類別的欄位,也使用可以比較明顯表示出實際意義的字串,而不應該使用INT之類的數字來代替
固定長度的字串使用 CHAR 類型,所有單個字元的全部使用 CHAR 類型,而不應該使用VARCHAR 類型
當字元數量可能超過 20000 個的時候,可以使用 TEXT 類型來存放字元類資料。所有使用 TEXT 類型的欄位必須和原表進行分拆,與原表主鍵單獨組成另外一個表進行存放;
需要精確到時間(年月日時分秒)的欄位可以使用DATETIME 或TIMESTAMP,但請注意各自能表達的範圍,以及是否需要用到TIMESTAMP的特性,盡量使用TIMESTAMP類型替代DATETIME以減少資料存放區空間的佔用
只需要精確到天的欄位全部使用 DATE 類型,而不應該使用 TIMESTAMP或DATETIME 自增序列特性的欄位只能使用 INT 或者 BIGINT,必須明確標識為無符號類型 (關鍵詞:UNSIGNED),除非確實會出現負數,僅當該欄位的數值會超過42億,才使用 BIGINT 類型,並且自增欄位必須作為主鍵或主鍵的一部分
本文永久更新連結地址: