整數類型(whole number) tinyint、smallint、medinuint、int和bigint,分別使用8,16,24,32,64位存儲空間。含有可選 unsigned 屬性,表示不容許爲負數html
實數類型(real number)segmentfault
是帶有小數部分的數字,float和double decimal只是一種存儲類型函數
varchar 和 char.net
如何存儲在硬盤和內存中與存儲引擎有關。 varchar(200)與char(5)存儲hello 的開銷是同樣的,使用 char 會更有優點,更長的列會消耗更多的內存,由於 MySQL 一般會分配固定大小的內存來保存內部值。最好只分配真正須要的空間翻譯
BLOB 和 TEXT 類型設計
BLOB 和 TEXT 都是爲存儲很大的數據而設計的字符串類型,分別採用二進制和字符方式存儲code
BLOB 與 TEXT 之間不一樣事 BLOB 類型存儲的是二進制數據,沒有排序規則或字符集。而 TEXT 類型有字符集和排序規則
枚舉(ENUM)類型htm
枚舉能夠把一些不重複的字符串存儲成一個預約義的集合。MySQL 存儲枚舉的值很是進程,會將列表值的數量雅座到一個或兩個文件中。MySQL 真正存儲的是整數,而不是字符串。blog
在特殊狀況下,把 char/varchat 列與枚舉列進行關聯,可能比 char/varchar 關聯要慢
MySQL 能存儲的最小時間粒度爲秒(可使用微秒級的粒度進行臨時運算)
datetime表示範圍到9999年,而 timestamp(包括時區) 表示範圍到2038年。
timestamp 佔用4字節,datetime 佔用8字節。timestamp 在時間處理上更方便一些
timestamp
翻譯爲漢語即"時間戳",它是當前時間到 Unix元年(1970 年 1 月 1 日 0 時 0 分 0 秒)的秒數。對於某些時間的計算,若是是以datetime
的形式會比較困難,假如我是1994-1-20 06:06:06
出生,如今的時間是2016-10-1 20:04:50
,那麼要計算我活了多少秒鐘用datetime
還須要函數進行轉換,可是timestamp
直接相減就行。
timestamp
只佔 4 個字節,並且是以utc
的格式儲存, 它會自動檢索當前時區並進行轉換。
datetime
以 8 個字節儲存,不會進行時區的檢索.
也就是說,對於timestamp
來講,若是儲存時的時區和檢索時的時區不同,那麼拿出來的數據也不同。對於datetime
來講,存什麼拿到的就是什麼。
還有一個區別就是若是存進去的是NULL
,timestamp
會自動儲存當前時間,而datetime
會儲存NULL
。
參考地址:https://segmentfault.com/a/11...
https://blog.csdn.net/ThinkWo...
http://www.javashuo.com/article/p-fuugqcyp-dp.html
https://mp.weixin.qq.com/s/qkfIJwLHCj4b1IqbZk-7IQ