MySQL 就如同一般的程式語言一樣,每個欄位都有其資料型別 (data types),常見的 MySQL 資料型別如下。
數值型別 (Numeric Types):對整數而言,M 為最大顯示寬度,M 的最大值為 255。對定點數與浮點數而言,M 為全部位數,D 為小數點後的位數。另外,BOOL 及 BOOLEAN 就等同於 TINYINT(1),而 NUMERIC 就等同於 DECIMAL。
資料型別 | 說明 | 範圍 |
TINYINT(M) | 整數,佔用 1 byte | -128 ~ 127 |
SMALLINT(M) | 整數,佔用 2 bytes | -32768 ~ 32767 |
MEDIUMINT(M) | 整數,佔用 3 bytes | -8388608 ~ 8388607 |
INT(M) | 整數,佔用 4 bytes | -2147483648 ~ 2147483647 |
BIGINT(M) | 整數,佔用 8 bytes | -9223372036854775808 ~ 9223372036854775807 |
DECIMAL(M,D) | 定點數 | 依 M、N 之值而定, M 的最大值為 65, D 的最大值為 30 |
FLOAT(M,D) | 浮點數,佔用 4 bytes, 精確度約為 7 位數 | -3.402823466E+38 ~ -1.175494351E-38, 0, 1.175494351E-38 ~ 3.402823466E+38 |
DOUBLE(M,D) | 浮點數,佔用 8 bytes, 精確度約為 15 位數 | -1.7976931348623157E+308 ~ -2.2250738585072014E-308, 0, 2.2250738585072014E-308 ~ 1.7976931348623157E+308 |
日期與時間型別 (Date and Time Types):F 為秒的小數位數,F 的最大值為 6。
資料型別 | 說明 | 範圍 |
DATE | 僅日期 | 1000-01-01 ~ 9999-12-31 |
DATETIME(F) | 日期與時間 | 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999 |
TIMESTAMP(F) | 日期與時間 | 1970-01-01 00:00:01.000000 UTC ~ 2038-01-19 03:14:07.999999 UTC |
TIME(F) | 僅時間 | -838:59:59.000000 ~ 838:59:59.000000 |
YEAR(4) | 僅日期中的年份 | 1901 ~ 2155, 0000 |
字串型別 (String Types):M 為最大字串長度。對文字而言,M 是以字元為單位,對二進位資料而言,M 是以位元組 (bytes) 為單位。請注意,對文字而言,若其使用的編碼含有多位元字元 (multibyte characters),如 utf8 等,則下述 M 的最大值可能會再減少。
資料型別 (文字型別 / 二進位資料型別) | 說明 | 範圍 |
CHAR(M) / BINARY(M) | 固定長度的字串 | M 的最大值為 255 |
VARCHAR(M) / VARBINARY(M) | 浮動長度的字串 | M 的最大值為 65535 |
TINYTEXT / TINYBLOB | 浮動長度的字串 | 最大字串長度為 255 |
TEXT(M) / BLOB(M) | 浮動長度的字串 | 最大字串長度為 65535 |
MEDIUMTEXT / MEDIUMBLOB | 浮動長度的字串 | 最大字串長度為 16777215 |
LONGTEXT / LONGBLOB | 浮動長度的字串 | 最大字串長度為 4294967295 |
其他重要的 MySQL 資料型別還有 BIT、ENUM、SET 等。您可以自行參考 MySQL 官方手冊。