整型:
数据类型 字节数
tinyint 1
smallint 2
mediumint 3
int 4
integer 4
bigint 8
可以根据字节数算出对应类型表示数的范围。每种类型都有无符号和有符号两种类型,对于无符号型的定义是类型后面+unsigned 如无符号型int :int unsigned。一般定义类型后面都会跟着数字比如 int(11)是说明输出时的长度,相当于C语言里面格式输出宽度,大于长度的原数输出,小于的左边用空格补充。如果在定义的时候不加长度,类型都会自动填充默认长度。
有一个参数zerofill可以加在类型后面,使得显示的数如果长度达不到默认长度,左边补零。但是zerofill代表的参数类型为无符号数。
小数类型:
对于小数类型有浮点数和定点数。有三个类型double,float,decimal。前两个是浮点数,后两个是定点数,
数据类型 字节数
float 4
double 8
decimal M+2
decimal的类型中有个M,因为decimal的使用方法是 decimal(M,D) M代表小数总长度(不包括小数点),D表示小数部分长度。由于mysql用字符串形式存储,因此其精度比浮点数要高,而且浮点数会出误差,如果要对数据的精度要求比较高,还是选择定点数比较安全。
另外要注意,如果插入的数大于了类型精度,double、float类型可以自动四舍五入,但是decimal会报警告,结果也会差很多。
日期类型:
数据类型 字节数 范围 零值表示
year 1 1901~2155 0000
date 4 1000-01-01~9999-12-31 0000:00:00
time 3 足够表示一天 00:00:00
datetime 8 1000-01-01 00:00:00~9999-12-31 23:59:59 0000-00-00 00:00:00
timestamp 4
插入时除了可以用“:”做分隔符,还可以用“@” ,“*”做分隔符。插入格式尽量完整,有时候自动补全会不正确。
插入时可以用current_time或now()获得现在的时间。
对于Datetime类型如果插入20140101010101可以默认转换为2014-01-01 01:01:01。
timestamp跟datetime表示方法基本一样,但是范围比datetime小点,要注意不要越界。
字符串类型:
varchar(L)其中L代表字符串最大长度,0<=L<=65535,该类型占的字节数为字符串长度加1,有一个字符串结束标志。varchar类型是可变长的,根据存储的字符串长度而定。
char(L)类型占的字节都是L个,不论实际的字符串有多长,所以有可能浪费空间。
char类型会删除字符串末尾的空格,varchar类型则不会。
如果插入的字符串长度大于了默认长度,系统会阻止插入。