整數型別,tinyint、smallint、mediumint、int、bigint
實數型別,float、double
字串型別,varhcar、char
時間型別,datetime、timestamp
如果需要儲存整數(不含小數),可以選擇tinyint、smallint、mediumint、int、bigint,它們的範圍如下圖:
另外,一些小知識:
整形的計算是使用64位的bigint進行計算的
如果為整形指定長度,並不會限制其大小範圍,只是影響顯示,其儲存與計算與其它長度的整形一致
如果僅為了儲存,不作精確的計算,可用float和double,它們的計算結果並不是精確的,只是近似計算,是cpu直接的原生浮點計算,效率比較高,但不精確。
如果需要精確計算,則可以用decimal,但儲存成本和計算成本比float和double高。
它們的主要區別在於varhcar是變長的,char是定長的。
在記錄的字串長度不一,或最大的字串長度大於字串平均長度時,使用varchar非常合適
記錄可知的定長的字串,用char就合適了
datetime將時間資料年月日時分秒內部儲存為整數型別,它需要8位元組的空間。
timestamp記錄gtm 2017-01-01至今的秒數,使用4位元組的空間。它的缺點是時間範圍只能到2023年,另外,它依賴與時區,時區的變更會使時間變得不同。
timestamp更小,但有缺點,主要取決於這些缺點是否影響到你的程式。
另外,使用timestamp需注意一點是,我在使用工具建立乙個表時,建立時沒有特別設定「預設值」、「非空」、「更新」等屬性,但timestamp會設定「預設值」為「current_timestamp」,「非空」,和「自動更新」。(究竟是工具的行為還是mysql的行為我沒有考究,大家引起注意這點,不要因此導致業務異常):
mysql 表 型別 mysql 表的型別
mysql 資料表主要支援六種型別 分別是 bdb heap isam merge myisam innobdb。這六種又分為兩類,一類是 事務安全型 transaction safe 包括bdb和innodb 其餘都屬於第二類,稱為 非事務安全型 non transaction safe bdb全...
mysql 表 型別 mysql表型別
mysql支援6種不同的表型別 bdb innodb heap isam merge以及myisam。其中 bdb,innodb單獨屬於一類,稱為 事務安全型 transaction safe 其餘的表型別屬於第二類,稱為 非事務安全型 non transaction safe 事務安全型 bdbb...
mysql表的設計 mysql,表設計
閒著沒事搞了一下,歡迎指教。使用者表 create table usr uid int 11 not null,name char 10 default null,primary key uid engine innodb default charset utf8 吃飯記錄表 create tabl...