【MySQL】MySQL表設計的常用數據類型


整數類型,tinyint、smallint、mediumint、int、bigint

如果需要保存整數(不含小數),可以選擇tinyint、smallint、mediumint、int、bigint,它們的范圍如下圖:

另外,一些小知識:

  • 整形的計算是使用64位的bigint進行計算的
  • 如果為整形指定長度,並不會限制其大小范圍,只是影響顯示,其存儲與計算與其它長度的整形一致

實數類型,float、double

如果僅為了存儲,不作精確的計算,可用float和double,它們的計算結果並不是精確的,只是近似計算,是CPU直接的原生浮點計算,效率比較高,但不精確。

如果需要精確計算,則可以用decimal,但存儲成本和計算成本比float和double高。

字符串類型,varhcar、char

它們的主要區別在於varhcar是變長的,char是定長的。

  • 在記錄的字符串長度不一,或最大的字符串長度大於字符串平均長度時,使用varchar非常合適
  • 記錄可知的定長的字符串,用char就合適了

時間類型,datetime、timestamp

  • datetime將時間數據年月日時分秒內部存儲為整數類型,它需要8字節的空間。
  • timestamp記錄GTM 2017-01-01至今的秒數,使用4字節的空間。它的缺點是時間范圍只能到2038年,另外,它依賴與時區,時區的變更會使時間變得不同。
    timestamp更小,但有缺點,主要取決於這些缺點是否影響到你的程序。

另外,使用timestamp需注意一點是,我在使用工具創建一個表時,創建時沒有特別設置“默認值”、“非空”、“更新”等屬性,但timestamp會設置“默認值”為“CURRENT_TIMESTAMP”,“非空”,和“自動更新”。(究竟是工具的行為還是MySQL的行為我沒有考究,大家引起注意這點,不要因此導致業務異常):


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM