本文概要介绍MySQL的数据类型:
-
MySQL数据类型分为三大类:
- 数字类型:
- 整数:tinyint, smallint, mediumint, int, bigint
- 浮点数:float, double, real
-
定点数:decimal
字符串类型: - 字符串:char, varchar
- 文本:tinytet, text, mediumtext, longtext
-
二进制:tinyblob, blob, mediumblob, longblob
日期和时间: - date, time, datetime, timestamp, year
1. 数字类型
1) 整数
数据类型 | 长度(字符数) | 范围(有符号) | 范围(无符号) |
---|---|---|---|
tinyint(m) | 1 | -128~127 | 0~255 |
smallint(m) | 2 | -32768~32767 | 0~65535 |
mediumint(m) | 3 | -8388608~8388607 | 0~16777215 |
int(m) | 4 | -2147483648~2147483647 | 0~4294967295 |
bigint(m) | 8 | +-9.22*10的18次方 | 0~9.22*10的18次方-1 |
int(m)中的m表示select查询结果集中显示的列宽,不影响字段存储的长度和范围。
2) 浮点数
数据类型 | 长度(字符数) | 说明 |
---|---|---|
float(m,d) | 4 | 单精度浮点型,8位精度 |
double(m,d) | 8 | 双精度浮点型,16位精度 |
3) 定点数
与浮点数不同,浮点数保存的是近似值,定点数保存的是精确值。
decimal(m,d),m表示数字总个数,d表示小数位数。
2. 字符串
1) 字符
数据类型 | 长度(字符数) | 说明 |
---|---|---|
char(n) | 固定长度n,n<=255 | |
varchar(n) | 可变长度n,n<=65535 | |
tinytext | 可变长度,最长255 | |
text | 可变长度,最长65535 | |
mediumtext | 可变长度,最长2^24-1 | |
longtext | 可变长度,最长2^32-1 |
char与varchar区别:
char定长,速度快,可能存在空间浪费;varchar变长,速度满,不存在空间浪费,实际存储长度为数据长度+1;
3) 二进制
数据类型 | 长度(字符数) | 说明 |
---|---|---|
tinyblob | L+1,L< 2^8 | |
blob | L+2,L< 2^16 | |
mediumblob | L+3,L< 2^24 | |
longblob | L+4,L< 2^32 |
blob与text区别:
blob数据只能整体读出,text可以指定字符集,blob按二进制存储不用指定字符集。
3. 日期时间类型
数据类型 | 长度(字符数) | 日期格式 | 日期范围 |
---|---|---|---|
year | 1 | YYYY | 1901 ~ 2155 |
date | 3 | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 |
time | 3 | HH:MM:SS | -838:59:59 ~ 838:59:59 |
datetime | 8 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
timestamp | 4 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 ~ 2038 |
timestamp随着记录insert、update时自动更新。
4. 数据类型属性
关键字 | 说明 |
---|---|
NULL | 数据列可以为NULL |
NOT NULL | 数据列不可为NULL |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 自动递增 |
UNSIGNED | 无符号行,用于修饰整型 |
DEFAULT | 默认值 |
CHARACTER SET name | 指定字符集,如UTF8,gb2312 |