MySQL資料型別及範圍用法一覽表
阿新 • • 發佈:2018-12-16
一、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、資料庫的最後設計結果一定是效率和可擴充套件性的折中,偏向任何一方都是欠妥的。