整形列属性:
1.unsigned
2.zerofill (以0来填充,并且使用了zerofill mysql 自动为其加上了unsigned属性)
alter table t1 add sn tinyint(3) zerofill;
注意 int(4),tinyint(3) 整形括号里的数字参数虽然解释为宽度,但是实际上只是用于配合zerofill使用的。其他无意义浮点型就是有用的。
浮点列属性:
例如:FLOAT(M,D)
M:是总位数 D:小数点后面的位数
float(5,2) 取值范围是 -999.99到999.99
浮点数的 unsigned的属性也是用来排除负数的区别是 并不会改变他的正数的取值上限
float和double会用精度的损失
而decimal(定点型)更加精确 建议使用(因为是整数位和小数位分开存)
字符型列属性:
1、char型(定长)varchar型(变长)
char(10) 10个字符的宽度。(固定宽度 寻址快速)这里的10是字符的长度不是字节
varchar(10)最长10个 若小于10个比如i个则占用i个+(1-2)个单位的补充数据(寻址信息)
一般在20个以内的字符用char
注意:char在不满指定的宽度的时候使用空格补位的,取出的时候则将空格去除。所以使用char会删除掉后面的空格。
enum 枚举型 是定义好值就在某几个值的范围内
sex(“男”,“女”);insert 或 update时候只能是男或女
set 集合型 是定义好值就在某几个值的范围内区别是可以是0个,1个或多个
时间型
如何数据量较大推荐使用时间戳。
一般用无符号整形
TIMESTAMP(自动 无需传值)
注意:
not null default 因为null不便于索引和查找 所以设置not null default
auto_increment 必须在主键上或索引上起作用,且一张表上只有一个自增列