- 本博客是《MySQL基礎》系列博客的第三部分,主要介紹MySQL中的數據類型
- 本博客既爲方便自己查看複習而作,亦爲你而作,望能有所裨益
- 學習交流請聯繫[email protected]
數據類型
- 每門語言都有屬於自己的數據類型,大同小異罷了。
- 如下圖紅色方框區域,就是數據類型選擇及展示之處。
- 下面我們就逐一介紹下一些常用的數據類型。
數值型數據
整數型數據
類型 | 大小 | 範圍(有符號) | 範圍(無符號) | 用途 |
---|---|---|---|---|
TINYINT | 1字節 | [-128,127] | [0,255] | 小整數值 |
SMALLINT | 2字節 | [-32768,32767] | [0,65535] | 大整數值 |
MEDIUMINT | 3字節 | [-8388608,8388607] | [0,4294967295] | 大整數值 |
INT | 4字節 | [-2147483648,2147483647] | [0,4294967295] | 大整數值 |
BIGINT | 8字節 | — | — | 極大整數值 |
浮點型數據
類型 | 大小 | 範圍(有符號) | 範圍(無符號) | 用途 |
---|---|---|---|---|
FLOAT | 4字節 | — | — | 單精度浮點數值(不精確) |
DOUBLE | 8字節 | — | — | 雙精度浮點數值(不精確 |
DECIMAL | 對DECIMAL(M,D)而言,字節數=max(M,D)+2 | 依賴於M和D的值 | 依賴於M和D的值 | 浮點數值(精確) |
注:DECIMAL(M,D)中M表示有多少位數字,D表示其中有多少位小數
字符型數據
字符集和字符序
我們之前在創建數據庫的時候曾經提到要選擇字符集及校驗集,在介紹字符型數據時,我們有必要先簡單介紹一下這個概念:
- 字符集:character set,是編碼和字符符號的映射集合
- 字符序:collation,即排序規則,是用於比較字符集中字符的規則集
注:如果想要區分大小寫,可以選擇後綴爲cs或bin的字符序。
show character set; -- 顯示MySQL所支持的字符集及校驗集
show variables like '%character%'; -- 顯示當前配置中已生效的字符集及校驗集
-- 我們平常遇到的亂碼情況產生的原因就是字符集轉化過程中其設置不一致
以下是MySQL中字符集的轉換流程(圖片來源:《MySQL開心入門》,侵刪)
字符類型
類型 | 範圍 | 簡介 |
---|---|---|
CHAR(n) | n表示字符數,最多255個字符 | 定長字符,不同編碼時其字節佔用數不同——latin:1個字符1個字節;gbk:1個字符2個字節;utf8:1個字符3個字節 |
VARCHAR(n) | n表示字符數,最多65535個字符 | 變長字符,會多一個字節用於表示長度:小於等於255個字符,一個字節表示長度;大於255個字符,兩個字節表示長度 |
TINYTEXT | 0~255字節 | 存儲空間爲值的長度+2個字節 |
TEXT | 0~65535字節 | 存儲空間爲值的長度+2個字節 |
MEDIUMTEXT | 0~167772150字節 | 存儲空間爲值的長度+3個字節 |
LONGEXT | 0~4294967295字節 | 存儲空間爲值的長度+4個字節 |
注:MySQL中每一行的所有數據合起來的字符長度不能超過65535
二進制數據
顧名思義,二進制類型就是用來保存二進制數據的數據類型。
類型 | 簡介 |
---|---|
BINARY(M) | 字節數爲M,允許長度爲0~M的定長二進制字符串 |
VARBINARY(M) | 允許長度爲0~M的變長二進制字符串,字節數爲值的長度加1 |
BLOB | 可變長二進制數據,最多 個字節 |
TINYBLOB | 可變長二進制數據,最多255個字節 |
MEDIUMBLOB | 可變長二進制數據,最多 個字節 |
LONGBLOB | 可變長二進制數據,最多 個字節 |
BIT(M) | M位二進制數據,M最大值爲64 |
日期型數據
類型 | 大小 | 範圍 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3字節 | 1000-01-01 / 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3字節 | -838:59:59 / 838:59:59 | HH:MM:SS | 時間值或持續時間 |
YEAR | 1字節 | 1901 / 2155 | YYYY | 年份值 |
DATETIME | 8字節 | 1000-01-01 00:00:00 / 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 時間和日期的混合值 |
TIMESTAMP | 4字節 | 1970-01-01 00:00:00 / 2038-1-19 11:14:07(北京時間) | YYYY-MM-DD HH:MM:SS | 時間戳 |
集合型數據
MySQL中的集合類型主要有兩個:enum 和 set
類型 | 簡介 |
---|---|
enum(‘選項一’,‘選項二’,···) | 字符串對象,單選列表其值從允許值列表中選擇,只能選一個值,最多可包含65535個不同的元素 |
set(‘選項一’,‘選項二’,···) | 字符串對象,多選列表,可以選零個或多個值,最多可包含64個不同的成員 |
注:集合型數據設置好後,在如下圖的原始界面並不能直接選擇
此時需要跳轉到表單界面進行相關操作,選擇完成後Apply即可