二、幾種數據類型mysql
1)整數類型sql
可使用的整數類型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分別使用8,16,24,32,64位存儲空間,存儲值的範圍爲-2(N-1)到 2(N-1)-1。對於整數能夠選擇unsigned屬性,表示不容許爲負數這可讓正數上限提升一倍。緩存
對於INT類型若是不指定寬度,Mysql會默認指定11位,可是實際上是不會限制值的合法範圍,只是規定了Mysql的一些交互工具用來顯示字符的個數,對於存儲來講INT(1)和 INT(20) 是相同的。工具
以下圖例子中,對於int(1), int(10), int(32)設置的數據表字段寬度並不影響int值的存入。性能
2)實數類型ui
FLOAT和DOUBLE類型支持使用標準的浮點運算進行近似計算。DECIMAL類型用於存儲精確的小數,在Mysql5.0和更高的版本中,DECIMAL類型支持精確計算。spa
浮點類型在存儲一樣範圍的值時,一般比DECIMAL使用更少的空間。FLOAT使用4個字節存儲,DOUBLE佔用8個字節,和int類型同樣數據類型才能以爲存儲數據上限,字段位數決定不了。設計
對於DECIMAL通常只有在存儲財務數據纔會使用,在數據量比較大的狀況下也能夠考慮使用BIGINT代替DECIMAL,將須要存儲的貨幣單位根據小數位數乘以相應的倍數便可。指針
3)字符串類型blog
VARCHAR:用於存儲可變長字符串,比定長類型更節省空間,僅須要必要的空間,可是須要一個或者兩個額外字節記錄字符串長度,若是最大長度小於或者等於255字節,則使用1個字節表示,不然用2個字節。對於字符串列的最大長度比平均長度大不少;列更新不多;使用了UTF-8複雜的字符集,VARCHAR會比較合適
CHAR:定長的類型,Mysql根據定義的字符串長度分配足夠的空間,比較適合存儲很短的字符串,或者全部值都接近同一長度的存儲要求。
BLOB和TEXT類型:兩種都是爲了存儲很大的數據而設計的字符串數據類型,分別採用二進制和字符方式存儲。當BLOB和TEXT值太大時,InnoDB會使用專門的「外部」存儲區域來進行存儲,這時在數據表中存儲的實際時一個指針指向外部的實際存儲區域。
4)時間類型
DATETIME:可以保存1001年到9999年,精度爲秒,把日期和時間封裝到格式爲YYYYMMDDHHMMSS的整數中,與時區無關。使用8個字節的存儲空間。
TIMESTAMP:保存從1970到2038年,使用4個字節存儲,與時區有關。因此若是在多個時區存儲訪問數據,DATETIME和TIMESTAMP的行爲會很不同。一般儘可能使用TIMESTAMP,由於比DATETIME空間效率更高
5)位數據類型
BIT:在Mysql5.0之前,BIT是TINYINT的同義詞,但在後續的版本中是徹底不一樣的數據類型。Mysql把BIT看成字符串類型而不是數字類型,當檢索BIT(1)值時結果時一個包含二進制0或1的字符串,而不是ASCII碼的0和1。
SET:若是須要保存不少true/false值,能夠考慮合併這些列到一個SET數據類型,它在Mysql內部是以一系列打包的位集合來表示。