引言
做爲一個作Java後端的開發者,不管是在本身平時項目學習實戰仍是工做中的真實項目,都離不開和數據庫打交道。而MySQL做爲當今最流行的關係型數據庫之一,也成爲了咱們必須掌握的一門技術。最近在工做項目中碰到過好幾回MySQL數據類型相關問題,好比字段類型大小越界啦,字段類型長度不夠啦pilipala......,因此今天抽空好好作個筆記總結一下。在這裏呢只總結MySQL的數據類型的基本知識,不會牽扯到索引或存儲引擎之類的知識(由於索引和存儲引擎的知識足夠寫一本很厚很厚的書了)。html
數值類型
其中對應於java中的類型都是基於mybatis生成對應的,實際上有符號和無符號對應於java中類型多是不同的。java
- TINYINT:大小(1byte),範圍(有符號爲-128到127,無符號爲0到255),用於小整數值,對應於java中的Byte類型;
- SMALLINT:大小(2byte),範圍(有符號爲-32768到32767,無符號爲0到65535),用於大整數值,對應於java中的Short類型;
- MEDIUMINT:大小(3byte),範圍(有符號爲-8388608到8388607,無符號爲0到65535),用於大整數值,對應於java中的Integer類型
- INT或INTEGER:大小(4byte),範圍(有符號爲-2147483648到2147483647,無符號爲0到4294967295),用於大整數值,也對應於java中的Integer類型
- BIGINT:大小(8字節),範圍(有符號爲-9223372036854775808到9223372036854775807,無符號爲0到18446744073709551615),用於極大整數值,對應於java中的Long類型
- FLOAT:大小(4字節),範圍(有符號爲-3.402 823 466 E+38到-1.175 494 351 E-38),0,(1.175 494 351 E-38到3.402 823 466 351 E+38,無符號爲0~18446744073709551615),用於單精度浮點值,對應於java中的Float類型
- DOUBLE:大小(8字節),範圍((-1.797 693 134 862 315 7 E+308 到-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308 到 1.797 693 134 862 315 7 E+308)),用於雙精度浮點值,對應於java中的Double類型;
- DECIMAL:大小(對DECIMAL(M,D) ,若是M>D,爲M+2不然爲D+2),範圍(依賴於M和D的值),用於小數值,尤爲用於金融相關,對應於java中的Long類型;
日期和時間類型
mybatis生成時都對應到java中的Date類型mysql
- DATE:大小(3byte),範圍(1000-01-01到9999-12-31),格式(YYYY-MM-DD),用於日期值;
- TIME:大小(3byte),範圍(-838:59:59到838:59:59),格式(HH:MM:SS),用於連續時間;
- TIMESTAMP:大小(4byte),範圍(1970-01-01 00:00:00/2038,結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07),格式(YYYY-MM-DD HH:MM:SS),用於混合日期和時間值
- DATETIME:大小(8byte),範圍(1000-01-01 00:00:00到9999-12-31 23:59:59),格式(YYYY-MM-DD HH:MM:SS),也用於混合日期+時間值
字符串類型
- CHAR(n):大小(0~255 byte,注意定義時指定的n爲字符數,而不是字節數),用於定長字符串;
- VARCHAR(n):大小(0~65535 byte,n也是指的字符數),用於變長字符串;
- TINYBLOB:大小(0~255 byte),用於不超過 255 個字符的二進制字符串;
- BLOB:大小(0~65535 bytes),用於二進制形式的長文本數據;
- MEDIUMBLOB:大小(0~16777215 bytes),用於二進制形式的中等長度文本數據;
- LONGBLOB:大小(0~4294967295 bytes),用於二進制形式的極大文本數據;
- TINYTEXT:大小(0~255 bytes),用於短文本字符串;
- TEXT:大小(0-65 535 bytes),用於長文本數據
- MEDIUMTEXT:大小(0~16777215 bytes),用於中等長度文本字數據;
- LONGTEXT:(0~4294967295 bytes),用於極大文本數據(足夠足夠大了,再長的文本數據也基本上夠你用了);
- 對了,還有一個BIT布爾類型,對應於java中的Boolean類型
總之吧,好記性不如爛筆頭嘛,作個筆記和總結,讓本身之後建立數據表的時候或者添加字段的時候可以正確的選擇MySQL的字段數據類型。若是仍是記不住,那就來這裏翻一下就行了,也不用這裏搜那裏查了,看本身的這篇筆記基本就夠了。sql
Reference
[1] https://www.runoob.com/mysql/mysql-data-types.html
[2] https://blog.csdn.net/qq_30046617/article/details/93380630數據庫