(2.5)Mysql之SQL基础——数据类型
关键词:mysql数据类型
目录:
一、整数型
二、小数型(以下均不能使用无符号)
三、日期时间型
四、字符串型
一、整数型
额外参数示例:
int [(n)] [unsigned] [zerofill]
【1】int(4) :显示的宽度,默认为11位,这个并不影响正常情况的显示和存储(不会影响宽度大于这个定义的值)。
当int字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度。
为什么会有无符号的限制呢,是因为ZEROFILL属性会隐式地将数值转为无符号型,因此不能存储负的数值。
【2】UNSIGNED :无符号数据类型
【3】ZEROFILL:0填充,当数据位不慢时,会进行0填充,如int(4),如果列数据值为1,则会显示为0001.(该选项必定是无符号的)
二、小数型(以下均不能使用无符号)
【1】定点:decimal (每位小数占一个字节,必须写MD) 【2】浮点:float(4字节)、double(8字节)(可以不写MD)
使用:decimal/float/double(M,D) ,M为总位数,D为小数位数。比如当M为10D为2时,则为 8位整数即2位小数。
float(M,D) :如果不写MD,则自动处理M为7左右
double(M,D) :如果不写MD,则自动处理M为15左右
注意:
【1】如果数据不满足定义的小数位D,则后置补0。
例如:float(5,3) ,数值为1.1 则自动填充为 1.100
【2】如果前置不满足M且使用了zerofill,则只有1-9会前置填充1个0,否则不填充(定点与浮点有区别);
浮点数:float(6,2) zerofill 当值为1.1 -》 01.10 当值为12.1 -》 12.10
定点数:decimal(6,2) zerofill 当值为1.1 -》 0001.10 当值为12.1 -》 00012.10
【3】如果数值的小数位大于D的定义,则会四舍五入;
例如:float(5.2) 当值为1.236 -》 1.24
三、日期时间型
四、字符串型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
ENUM | 0~65535 | 枚举类型 |
SET | 集合类型 |
注意
(1)字符集的区别:【1】UTF8:1个字符占用3个字节 【2】GBK:1个字符占用2个字节
(2)char与varchar:【1】char:会自动删除后置空格(但会保留前置)