mysql資料類型總結,mysql資料類型
資料類型最佳化1、盡量使用能正常儲存資料的最小資料類型(更快,佔用更少的磁碟、記憶體和cpu)2、盡量使用簡單類型。(如整型比字元操作代價低)3、盡量避免使用NULL(可以通過加預設值設定not null)
資料類型:支援別名,如integer,bool,numeric1、時間DATETIME和TIMESTAMP都精確到秒。通常應該盡量使用timestamp。datetime能儲存大範圍的值,從1001年到9999年把日期和時間封裝到格式YYYYMMDDHHMMSS的整數中,與時區不轉換。使用8個位元組的儲存空間。timestamp儲存秒數,只用4個位元組,範圍比datetime小:只能表示從1970到2038年。日期的顯示依賴於時區。預設為not null,如果插入時沒有指定值,則預設值為目前時間。
2、整型tinyint(8位),smallint(16位),mediumint(24位),int(32位),bigint(64位)整型有可選的unsigned屬性,表示正數整數計算一般使用64位的bigint可以為整數指定寬度(只是為用來規定mysql的互動工具顯示字元的個數,不會限制值的合法範圍)
3、實數精確類型:float,double(不適合用於貨幣的計算)不精確類型:decimal,decimal只是一種儲存格式,在計算中decimal會轉換成double類型可以指定精度,指定小數點前後所允許的最大位元建議只使用資料類型,不要指定精度4、字串類型char 當儲存為char類型時,mysql會刪除所有的末尾空格(檢索時),char值會根據需要採用空格進行填充以方便比較。適合儲存很短的字串或者所有值接近同樣的長度,經常變更的資料也更適合用char儲存varchar僅使用必要的空間,但有一種情況例外,即若建表時使用row_format=fixed,則每一行都使用定長儲存需要1或2個額外位元組記錄字串長度(若列最大長度小於等於255,只需要一個位元組,依次類推)適用情況:
- 字串列最大長度比平均長度大很多
- 列更新少,不存在片段問題
- 使用了像utf-8這樣複雜的字元集,每個字元都使用不同的位元組數來儲存
binary和varbinary儲存二進位字串(位元組碼),填充binary使用'\0'填充,檢索時也會去掉填充值
5、BLOB和TEXT類型二進位方式儲存:tinyblob,smallblob(blob的同義字),mediumblob,longblob字元方式儲存:tinytext,smalltext(text的同義字),mediumtext,longtext
6、使用枚舉(ENUM)代替字串類型儲存時非常緊湊,會根據列表值的數量壓縮到一個或兩個位元組中create table enum_test( e enum('fish','apple','dog') not null)insert into enum_test(e) values('fish'),('dog'),('apple')資料插入後存放在表中的資料實際上是整數而不是字串。
7、位元據類型
bitbit(1)定義一個包含單個位的欄位,bit(2)儲存兩個位。bit列的最大長度是64位。mysql把bit當作字串類型,而不是數字類型。最好避免使用這種類型,如果要用一個bit儲存一個true/false值,替代方法是建立一個char(0),可以儲存空值NULL或者長度為0的字串。
set儲存很多true/false值的集合例如create table acl( perms set('can_read','can_write','can_delete') not null)insert into acl(perms) values('can_read,can_delete');優點:有效利用儲存空間,可以使用find_in_set()等函數缺點:改變列定義的代價太高:需要alter table,對大表來說非常昂貴。而且無法在set列上通過索引尋找
參考:《高效能Mysql》
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。