mysql資料庫型別選擇和比較
時間型別
Date
名稱 | 解釋 |
顯示格式 | YYYY-MM-DD |
顯示範圍 | 1000-01-01 到 9999-12-31 |
應用場景 | 當業務需求中只需要精確到天時,可以用這個時間格式 |
後臺取值 | @JSONField(format=”yyyy-MM-dd”) |
Time
名稱 | 解釋 |
顯示格式 | HH:mm:ss |
顯示範圍 | 00:00:00到23:59:59 |
應用場景 | 當業務需求中只需要每天的時間,可以用這個時間格式 |
後臺取值 | @JSONField(format=”HH:mm:ss”)) |
DateTime
名稱 | 解釋 |
顯示格式 | YYYY-MM-DD HH:mm:ss |
顯示範圍 | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 |
應用場景 | 當業務需求中需要精確到秒時,可以用這個時間格式 |
後臺取值 |
@JSONField(format=”yyyy-MM-dd HH:mm:ss”) |
TimeStamp
名稱 | 解釋 |
顯示格式 | YYYY-MM-DD HH:mm:ss |
顯示範圍 | 1970-01-01 00:00:01 UTC to 2038-01-19 03:14:07 UTC |
應用場景 | 轉化成utc(世界標準時間)儲存,目前只能到2038年,可以自動更新時間 |
後臺取值 | @JSONField(format=”yyyy-MM-dd HH:mm:ss”) |
數字型別
記住一個原則,越小的列會越快。所以有必要了解各種型別的大小
bigint
從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型資料(所有數字),無符號的範圍是0到18446744073709551615。一位為 8 個位元組。
int
一個正常大小整數。有符號的範圍是-2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型資料(所有數字),無符號的範圍是0到4294967295。一位大小為 4 個位元組。
mediumint
一箇中等大小整數,有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。 一位大小為3個位元組。
smalint
一個小整數。有符號的範圍是-2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型資料,無符號的範圍是0到65535。一位大小為 2 個位元組。MySQL提供的功能已經綽綽有餘,而且由於MySQL是開放原始碼軟體,因此可以大大降低總體擁有成本。
tinyint
1個位元組
有符號的範圍是-128 - 127,無符號的範圍是 從 0 到 255 的整型資料。一位大小為 1 位元組。字典表用這個欄位足以。
Float
佔四個位元組
有符號的取值範圍:-3.402823466E+38~-1.175494351E-38。
無符號的取值範圍:0 和 -1.175494351E-38~-3.402823466E+38。
Double
佔八個位元組
有符號的取值範圍:-1.7976931348623157E+308~-2.2250738585072014E-308。
無符號的取值範圍:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。
Decimal(M,D)
佔M+2 個位元組
由M(整個數字的長度,包括小數點,小數點左邊的位數,小數點右邊的位數,但不包括負號)和D(小數點右邊的位數)來決定,M預設為10,D預設為0 .
字串型別
CHAR(M) 或 NCHAR(M)
M的範圍為1 - 255,NCHAR表示使用預設的字符集.在資料庫中以空格補足,但在取出來時末尾的空格將自動去掉.
VARCHAR(M)
M的範圍為1 - 255.在資料庫中末尾的空格將自動去掉.
TINYBLOB 或 TINYTEXT
255(2^8-1)個字元
BLOB 或 TEXT
65535(2^16-1)個字元
MEDIUMBLOB 或 MEDIUMTEXT
16777215 (2^24-1)個字元
LONGBLOB 或 LONGTEXT
4294967295 (2^32-1)個字元