一.大致分为三大类
1.整形列(默认带符号)
bigint 占了8个字节
int 占了4个字节
mediumint 占了3个字节
smallint 占了2个字节
tinyint 占了一个字节
unsigned 代表无符号
zerofill 代表0填充,即:如果该数字不足参数M位,则自动补0,补够M位.固定宽度的数字可以用0填充
如果设置某列为zerofill,则该列已经默认为unsigned,无符号类型.
如果没有zerofill属性,单独的参数M,没有任何意义.
2.浮点列与定点列
float(M,D)/double(M,D) M是精度位数 D小数的位数 M说白了就是总的位数 D就是小数点最后位数 不准确有精度的损失
decimal比float更精确 适合存储精确的数字
3.字符型列 M代表字符
char(M) 定长 如果不够M个字符,内部用空格补齐,取出时再把右侧空格删掉 这也说明如果右侧用空取出将会被干掉 最大限制255字符吧
vachar(M) 变长 没有特殊的变化 6万多个字符吧
Char与Varchar的对比
速度上: 定长速度快些 根据适当的情况选择适合的类型
3.枚举型
ENUM() 首先都把值给定义好插入的时候如果不在这个值的范围就会报错 没有在集合的之中不可以被insert进来 ENUM('男','女')
4.文本类型
TEXT()存放大段文本用到的 相对一种TEXT都应一种MEDIUMBLOB()而相对有这种是存放二进制中文的不会因为字符集的问题导致文件信息被过滤(丢失)
SET() 首先把值给定义好了 在insert的时候可以选多个值 没有在这个范围也会报错的
4.日期型
Year()年
DATETIME()年月日时分秒
Date()日期
timestamp()时间戳 我们一般不用这个因为计算不方便 我们用 int unsigned 作为时间戳