mysql 數據類型選擇

1、整型和浮點型
如果不需要小數部分,則使用整數來保存;如果需要表示小整數部分,則使用浮點整數類型。對於浮點整數列,村誒的數值會對該列定義的小整數位進行四捨五入。例如。如果列的值的範圍爲1~99999,若使用整數,則mediumint usigned 是最好的類型;若需要存儲小數,則使用float類型。浮點類型包括float和double類型。double類型的精度比float類型高,因此,如果需要存儲精度較高時,應該選擇double類型
2、浮點數和定點數
浮點數容易產生誤差,因此對於精度要求比較高時,建議使用decimal來存儲,decimal在mysql中是以字符串存儲的,用於定義貨幣等對精度要求比較高的書。在數據遷移中,float(M,D)是非標準SQL定義,數據庫遷移可能會出現問題,最好不要這樣使用,浮點數在計算的時候容易出現問題,在進行數值比較時,最好使用decimal類型
3、日期和時間類型
如果只需要記錄年份,則使用year類型即可。如果只記錄時間,只需要使用time類型即可
如果同時需要記錄時間和日期,則可以使用TIMESTAMP或者DATETIME類型,TIMESTAMP的取值範圍小於DATETIME取值範圍,因此存儲範圍較大啊的日期時最好選用DATETIME
TIMESTAMP有一個DATETIME不具備的屬性,默認情況下,當插入一條記錄並沒有指定TIMESTAMP這個列時,mysql會把TIMASTAMP列設爲當前的時間,因此當需要插入記錄同時插入當前時間時,使用TIMESAMP是方便地。另外TIMESTAMP在空間上比DATETIE更有效
4、char和varchar之間
char是固定長度,varchar是可變長度char會自動補全空格,varchar不會補全。
char是固定長度,因此處理速度比varchar的處理速度快。但是浪費空間,所以對存儲不大,但是速度上有要求的額可以使用char類型
存儲引擎對於選擇char和varchar的影響
對於myISAM存儲引擎,最好使用固定長度的數據列代替可變長度的數據列,這樣可以使數據檢索更快,
對於InnoDB存儲引擎,使用可變長度的數據列,因爲InnoDB數據表的村塾格式不扥固定長度和可變長度,因此使用char不一定比使用varchar更好,但是由於VARCHAR是按照實際長度存儲的,因此空間上更節省
5、ENUM和SET
ENUM只能取單值,它的數據列是一個枚舉集合,它的合法取值列表最多允許有65535個成員,在定義性別時可以使用
SET可取多值,最多可以允許有64個成員,比如存儲一個人的興趣愛好
ENUM和SET的值是以字符串的形式出現的,但是在內部,mysql以數值的形式存儲
6、BLOB和text
blob是二進制字符串,text是非二進制字符串,兩者均可以存放大容量的信息。BLOB主要存儲圖片,音頻信息等。而TEXT主要存儲純文本文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章