1. 数值类型
数据类型 | 说明 |
---|---|
BIT (M) | 位类型。M指定位数,默认值1,范围1~64 |
TINYINT [UNSIGNED] | 带符号的范围-128-127,无符号范围0~255,默认有符号,占位1字节 |
BOOL | 使用0和1表示真和假,占位1字节 |
SMALLINT [UNSIGNED] | 带符号是-2^ 15次方到2^ 15-1,无符号是2^16-1 |
INT [UNSIGNED] | 带符号是-2^ 31次方~2^ 31次方-1,无符号是2^32-1 |
BIGINT [UNSIGNED] | 带符号是-2^ 63次方~2^ 63次方-1,无符号是2^64-1 |
FLOAT [(M,D)] [UNSIGNED] | 浮点数,M指定显示长度,D指定小数位数,占位4字节 |
DOUBLE [M,D] [UNSIGNED] | 浮点数,M指定显示长度,D指定小数位数,占位8字节,比float精度更大的小数 |
DECIMAL (M,D) [UNSIGNED] | 定点数,M指定显示长度,D指定小数位数,占位4字节 |
注意事项:
BIT
字段在显示时,是按照ASCII码对应的值显示。
FLOAT
表示的精度大约是7位。
DECIMAL
整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。如果我们希望某个数据表示高精度,选择
DECIMAL
2. 文本、二进制类型
数据类型 | 说明 |
---|---|
CHAR (size) | 固定长度字符串,最大255 |
VARCHAR (size) | 可变长度字符串,最大长度65535 |
BLOB | 二进制数据 |
TEXT | 大文本,不支持全文索引,不支持默认值 |
CHAR和VARCHAR比较:
实际存储 | CHAR(4) | VARCHAR(4) | CHAR占用字节 | VARCAHR占用字节 |
---|---|---|---|---|
abcd | abcd | abcd | 4*3=12 | 4*3+1=13 |
A | A | A | 4*3=12 | 1*3+1=4 |
abcde | × | × | 数据超过长度 | 数据超过长度 |
注意事项:
关于
varchar(len)
,len到底是多大,这个len值,和表的编码密切相关:varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
当我们的表的编码是
utf8
时,varchar(n)
的参数n最大值是65532/3=21844[因为utf
中,一个字符占用3个字节],如果编码是
gbk
,varchar(n)
的参数n最大是65532/2=32766(因为gbk
中,一个字符占用2字节)。
3. 时间日期
数据类型 | 说明 |
---|---|
DATE | 存储日期,格式为 ‘YYYY-MM-DD’,占用3字节 |
DATETIME | 存储日期和时间,格式为 ‘YYYY-MM-DD HH:MM:SS’,占用8字节。 |
TIMESTAMP | 存储时间戳,与UTC时区相关联,格式与DATETIME相同,占用4字节。 |
4. String类型
数据类型 | 说明 |
---|---|
ENUM(单选类型) | 枚举类型,,ENUM是一个字符串对象,其值来自表创建时在列固定中显示枚举的一列值 |
SET(多选类型) | 集合类型,SET是一个字符串对象,可以有零和多个值,其值来自表创建时规定的允许的一列值,指定包括多个set成员的set列值时各成员之间用逗号隔开,这样set成员值本身不能包含逗号 |