1. 程式人生 > >MySQL資料型別及範圍用法一覽表

MySQL資料型別及範圍用法一覽表

一、MySQL的資料型別

主要包括五大類:

整數型別:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

浮點數型別:FLOAT、DOUBLE、DECIMAL

字串型別:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期型別:Date、DateTime、TimeStamp、Time、Year

其他資料型別:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

二、MYSQL資料型別的長度和範圍

各資料型別及位元組長度一覽表:

資料型別

(DataType)

位元組長度(Byte)

範圍或用法

(Range or Usage)

Bit 1 無符號[0,255],有符號[-128,127],備註:BIT和BOOL布林型都佔用1位元組
TinyInt 1 無符號[0,255],有符號[-128,127]
SmallInt 2 無符號[0,65535],有符號[-32768,32767]
MediumInt 3 無符號[0,2^24-1]==[0,16777215],有符號[-2^23,2^23-1]==[-8388608,8388607]
Int 4 無符號[0,2^32-1]==[0,4294967295],有符號[-2^31,2^31-1]==[-2147483648,2147483647]
BigInt 8 無符號[0,2^64-1]==[0,18446744073709551615],有符號[-2^63 ,2^63 -1]==[-9223372036854775808,9223372036854775807]
Float(M,D) 4 單精度浮點數。注:這裡的D是精度,如果D<=24則為預設的FLOAT,如果D>24則會自動被轉換為DOUBLE型。
Double(M,D) 8 雙精度浮點。
Decimal(M,D) M+1或M+2 未打包的浮點數,用法類似於FLOAT和DOUBLE,注:您如果在ASP中使用到Decimal資料型別,直接從資料庫讀出來的Decimal可能需要先轉換成Float或Double型別後再進行運算。
Date 3 以YYYY-MM-DD的格式顯示,比如:2009-07-19
Date Time 8 以YYYY-MM-DD HH:MM:SS的格式顯示,比如:2009-07-19 11:22:30
TimeStamp 4 以YYYY-MM-DD的格式顯示,比如:2009-07-19
Time 3 以HH:MM:SS的格式顯示。比如:11:22:30
Year 1 以YYYY的格式顯示。比如:2009
Char(M) M

定長字串。

VarChar(M) M 變長字串,要求M<=255
Binary(M) M 類似Char的二進位制儲存,特點是插入定長不足補0
VarBinary(M) M 類似VarChar的變長二進位制儲存,特點是定長不補0
Tiny Text Max:255 大小寫不敏感
Text Max:64K 大小寫不敏感
Medium Text Max:16M 大小寫不敏感
Long Text Max:4G 大小寫不敏感
TinyBlob Max:255 大小寫敏感
Blob Max:64K 大小寫敏感
MediumBlob Max:16M 大小寫敏感
LongBlob Max:4G 大小寫敏感
Enum 1或2 最大可達65535個不同的列舉值
Set 可達8 最大可達64個不同的值
Geometry
Point
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection

三、使用建議

1、在指定資料型別的時候一般是採用從小原則,比如能用TINY INT的最好就不用INT,能用FLOAT型別的就不用DOUBLE型別,這樣會對MYSQL在執行效率上提高很大,尤其是大資料量測試條件下。

2、不需要把資料表設計的太過複雜,功能模組上區分或許對於後期的維護更為方便,慎重出現大雜燴資料表。

3、資料表和欄位的起名字也是一門學問。

4、設計資料表結構之前請先想象一下是你的房間,或許結果會更加合理、高效。

5、資料庫的最後設計結果一定是效率和可擴充套件性的折中,偏向任何一方都是欠妥的。