MySQL 中的數據類型

整數類型

整數類型(whole number) tinyint、smallint、medinuint、int和bigint,分別使用8,16,24,32,64位存儲空間。含有可選 unsigned 屬性,表示不容許爲負數html

實數類型(real number)segmentfault

是帶有小數部分的數字,float和double decimal只是一種存儲類型函數

關於float 與 double 的區別ui

字符串類型

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來講,存什麼拿到的就是什麼。

還有一個區別就是若是存進去的是NULLtimestamp會自動儲存當前時間,而datetime會儲存NULL

參考地址:https://segmentfault.com/a/11...

char 與 varchar 的區別

  1. char 類型用於存儲定長字符串,varchar存儲可變長子字符串
  2. varchar 須要1-2個字節存儲長度信息
  3. char 在存儲的時候會補空格到達指定長度來存儲,varchar 則不須要
  4. char 在檢索的時候會刪除尾部的空格(可增長配置參數 PAD_CHAR_TO_FULL_LENGTH 保留尾綴空格)
  5. char 的存取速度要比 varchar 快,而 varchar 的空間利用率會更高

更多閱讀

https://blog.csdn.net/ThinkWo...

參考連接

http://www.javashuo.com/article/p-fuugqcyp-dp.html
https://mp.weixin.qq.com/s/qkfIJwLHCj4b1IqbZk-7IQ

相關文章
相關標籤/搜索