原则:所选择的类型越简单越好,能保存的数值类型越小越好;
整型特点:
1、如果不设置无符号还是有符号,默认有符号,如果需要设置无符号,需要用unsigned约束
2、如果插入数值超出范围,会报out of rang警告,但是会插入范围的临界值
3、如果不设置长度,会有默认长度,长度代表了显示的最大宽度,如果不够,会用0在左边填充,但必须搭配zerofill使用;
小数特点:
浮点数:float(M,D);double(M,D)
定点数:dec(M,D)
1、M代表整数部位+小数部位的长度;D代表小数部位的长度;如果超出范围则插入临界值;
2、M和D都可以省略,如果是dec,则M默认为10,D为0;如果是float和double,则会根据插入数值的精度来
3、定点型的精确度较高,如果要求插入数值精度较高的运算如货币运算
字符型:
enum枚举:创建字段时,预先设置好枚举的值,之后该字段中只能存储设置好的值;比如:sex enum('男','女'),则该sex字段只能插入男或女;(值是字母的话,不区分大小写)
set集合:和枚举类似,但可以插入设置好的多个值,自动逗号分隔;比如 n set('a','b','c','d'),在插入该字段值的时候可以是values('a'),也可以是values('a','b','c'),此时存入的值为a,b,c;(值是字母的话,不区分大小写)
char(M):定长,M表示最大可存储的字符数,存入少于该字符数也按M字符数占用空间,不可超出M字符数,超出报错;
varchar(M):可变长,M表示最大可存储的字符数,存入字符数按实际字符数+1来占用空间(1是用来存储可变长),不可超出M字符数,超出报错;
日期型:
date:只保存日期,如2020-03-22;
time:只保存时间,如22:22:22;
year:只保存年,如2020
datetime:保存日期+时间:8字节:范围1000-9999:不受时区影响
timestamp:保存日期+时间:4字节:范围1970-2038:受时区影响
时区影响:会根据mysql设置的时区不同,查出的时间不同