mysql数据基本类型:整型、小数型、日期类型、字符串、set。

整型

tinyint(L) 、smallint(L)、mediumint(L)、int(L)、bigint(L)

1、依次占空间大小:1字节、2字节、3字节、4字节、8字节。L表示数据长度,也可以不写。

2、在数据类型后面还可以添加关键字

     unsigned:表示无符号设置

    zerofill:表示长度不足用0补满

小数型

1、浮点型:float(有效数字长度L, 小数长度D)、double(有效数字长度L, 小数长度D)

2、定点型:decimal(整数长度M, 小数长度D)

注意:(1) 在浮点型中,float占4字节,精确度7位左右。double占8字节,精确度15位左右。插入符合有效位数但超过精确度的数据时会丢失精度。

         (2) 在定点型中,M不能大于65,D不能大于30。大概9位数字时分配一个字节。小数和整数分开存储。

日期类型

date、time、datetime、timestamp、year

1、依次占空间大小:4字节、3字节、8字节、4字节、1字节。

2、year 可以插入2位数 或者 4位数。插入两位是需要注意临界值69 和 70之间的区别。

3、time表示时间段。范围-838:59:59~838:59:59。插入该字段时还可以写作:天数 HH:mm:ss。

4、时间戳特性:记录发生变化时,自动更新。

字符串

char(字符数量0-255)、varchar(字符数0-65535)、text、enum(值1,值2...)、set

1、varchar额外开销用于保存数据所占空间长度。通常数据库采用utf8,一个字符占3个字节。如果数据本身小于127个字符,额外开销1字节。大于127个字符,额外占用2个字节。

2、字符数超过255,建议使用 文本类型text。

3、enum存储原理:实际上字段所存储的值并不是真正的字符串,而是字符串所对应的下标:当系统设定枚举类型的时候,会给枚举中每个元素定义一个下标,这个下标从1开始。故插入enum类型数据时,可以插入值或者是对应下标。

4、mysql特性:类型自动转换,当数据碰到“+-*/”时,系统就会自动将数据转换成数值,而普通字符串转换成数值为0。可以使用查询语句:select 字段名+0 from 表名;

5、set:集合类型。它可以将多个数据选项同时保存的数据类型,本质是将制定的项按照对应的二进制位来进行控制:1表示选中,0表示未被选中。一个字节8位,故只能对应8个选项。set提供的存储大小为:1字节,2字节,3字节,8字节。基本语法:set('值1','值2','值3'...);。

6、mysql长度记录:mysql规定行总长度不能超过65535个字节。varchar能存储的理论值为65535个字符,而一个字符在不同的字符集中可能占多个字节(utf8占3个字节,gbk占2个字节)。

    (1) utf8字符集中,最多能存储65535/3-2 = 21844个字符。(2为varchar额外占用字节)

    (2) gbk字符集中,最多能存储65535/2-2 + 1 = 32766个字符。(1为余数)