(1) 數值資料
型態名稱 | 記憶體空間 | 數值範圍 | 無號數(UNSIGNED) |
TINYINT | 1bytes | -128~127 | 0-255 |
SMALLINT | 2bytes | -32768~32767 | 0-65535 |
MEDIUMINT | 3bytes | -8388608~8388607 | 0-16777215 |
INT 或 INTEGER | 4bytes | -2147483648~2147483647 | 0-4294967295 |
BIGINT | 8bytes | -922337203685475808 ~922337203685475807 | 0-188446744073709550615 |
FLOAT(M,D) | 4(<24)/8 | 依據變數值而定 | 無 |
FLOAT | 4bytes | 無 | |
DOUBLE(M,D) | 8bytes | 依據變數值而定 | 無 |
DECIMAL(M,D) | MB單位+2 | 依據變數值而定 | 無 |
「FLOAT」和「DOUBLE」型態的欄位可以用來儲存包含小數的數值,儲存空間分別是4和8個位元組,它們是一種佔用儲存空間比較小,執行運算比較快的型態。不過因為它們是使用「近似值」來儲存你的數值,所以如果你需要儲存完全精準的數值,就不能使用這兩種型態。「DECIMAL」型態就可以用來儲存完全精準的數值,儲存在這個型態中的數值,不論是查詢或是運算,都不會有任何誤差,不過「DECIMAL」型態佔用的儲存空間就比「FLOAT」和「DOUBLE」型態大。
(2) 字串資料
型態名稱 | 最大長度 | 儲存空間 |
CHAR(X) | 255bytes | x bytes |
VARCHAR(X) | 255bytes | x+1bytes |
TINYTEXT | 255bytes | x+1bytes |
TEXT | 65535bytes | x+2bytes |
MEDIUMTEXT | 16,777,215bytes | x+3bytes |
LONGTEXT | 4,294,967,295bytes | x+4bytes |
TINYBLOB | 255bytes | x+1bytes |
BLOB | 65535bytes | x+2bytes |
MEDIUMBLOB | 16,777,215bytes | x+3bytes |
LONGBLOB | 4,294,967,295bytes | x+4bytes |
VARCHAR與CHAR兩種字符型數據類型相比,最大的差異就是前者是可變長度,而后者則是固定長度。在存儲時,前者會根據實際存儲的數據來分配最終的存儲空間。而后者則不管實際存儲數據的長度,都是根據CHAR規定的長度來分配存儲空間。這是否意味著CHAR的數據類型劣于VARCHAR呢?其實不然。否則的話,就沒有必要存在CHAR字符類型了。雖然VARCHAR數據類型可以節省存儲空間,提高數據處理的效率。但是其可變長度帶來的一些負面效應,有時候會抵消其帶來的優勢。為此在某些情況下,還是需要使用Char數據類型。
(3) 日期時間資料
型態名稱 | 範圍 |
Date | 「1000-01-01」到「9999-12-31」 |
Time | 「-838:59:59」到「838:59:59」 |
Year | 1901 to 2155, and 0000 |
Datetime | '1000-01-01 00:00:00' to '9999-12-31 23:59:59' |
Timestamp | '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC |
更多參考資料:
http://teacher.mybruse.com/thread-108-1-1.html
http://apt.nc.hcc.edu.tw/pub/
http://inspirr.pixnet.net/blog/post/70870607-mysql%E6%95%B8%E6%93%9A%E5%BA%AB%E4%B8%ADchar%E8%88%87varchar%E4%B9%8B%E7%88%AD
0 留言