MySQL Data Types

Data Types就是資料型態,在MySQL有三大類型的資料型態: (1) 數值資料 (2) 字串資料 (3) 其他如日期與時間資料。



(1) 數值資料
型態名稱記憶體空間數值範圍無號數(UNSIGNED)
TINYINT 1bytes-128~127                 0-255
SMALLINT  2bytes-32768~32767           0-65535
MEDIUMINT  3bytes-8388608~8388607    0-16777215
INT  或  INTEGER4bytes-2147483648~2147483647  0-4294967295
BIGINT8bytes-922337203685475808 ~922337203685475807  0-188446744073709550615
FLOAT(M,D) 4(<24)/8
依據變數值而定
FLOAT4bytes
DOUBLE(M,D) 8bytes
依據變數值而定
DECIMAL(M,D) MB單位+2
依據變數值而定

「FLOAT」和「DOUBLE」型態的欄位可以用來儲存包含小數的數值,儲存空間分別是4和8個位元組,它們是一種佔用儲存空間比較小,執行運算比較快的型態。不過因為它們是使用「近似值」來儲存你的數值,所以如果你需要儲存完全精準的數值,就不能使用這兩種型態。「DECIMAL」型態就可以用來儲存完全精準的數值,儲存在這個型態中的數值,不論是查詢或是運算,都不會有任何誤差,不過「DECIMAL」型態佔用的儲存空間就比「FLOAT」和「DOUBLE」型態大。

(2) 字串資料
型態名稱最大長度儲存空間
CHAR(X)255bytesx bytes
VARCHAR(X) 255bytesx+1bytes
TINYTEXT 255bytesx+1bytes
TEXT 65535bytesx+2bytes
MEDIUMTEXT16,777,215bytesx+3bytes
LONGTEXT4,294,967,295bytesx+4bytes
TINYBLOB255bytesx+1bytes
BLOB65535bytesx+2bytes
MEDIUMBLOB16,777,215bytesx+3bytes
LONGBLOB4,294,967,295bytesx+4bytes

VARCHAR與CHAR兩種字符型數據類型相比,最大的差異就是前者是可變長度,而后者則是固定長度。在存儲時,前者會根據實際存儲的數據來分配最終的存儲空間。而后者則不管實際存儲數據的長度,都是根據CHAR規定的長度來分配存儲空間。這是否意味著CHAR的數據類型劣于VARCHAR呢?其實不然。否則的話,就沒有必要存在CHAR字符類型了。雖然VARCHAR數據類型可以節省存儲空間,提高數據處理的效率。但是其可變長度帶來的一些負面效應,有時候會抵消其帶來的優勢。為此在某些情況下,還是需要使用Char數據類型。

(3) 日期時間資料
型態名稱範圍
Date「1000-01-01」到「9999-12-31」
Time「-838:59:59」到「838:59:59」
Year1901 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/FreeSoftware/php_doc/20031214%B4%BF%B5Y%B4I%A6%D1%AEvPHP%C1%BF%B8q/3-2.htm
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 留言