时间:2021-07-01 10:21:17 帮助过:46人阅读
alter table [vg] add [id] tinyint unsigned not null default 0;
表中可存入255的id
insert into vg (sname,id) values ('test',255);
#分析M参数
alter table vg add age1 tinyint(1) not null default 0; insert into vg class (sname,age1) values ('M1',3); insert into vg (sname,age1) values ('agin M',99);
#这时候M是没有意义的
select * from vg; +--------+-----+-------+------+------+ | sname | age | socre | test | age1 | +--------+-----+-------+------+------+ | 刘备 | 28 | 0 | 0 | 0 | | 张飞 | 0 | -1 | 0 | 0 | | test | 0 | 0 | 255 | 0 | | M1 | 0 | 0 | 0 | 3 | | agin M | 0 | 0 | 0 | 99 | +--------+-----+-------+------+------+
#M必须和zerofill配合才有意义
增加列
alter table vg add snum smallint(5) zerofill not null default 0; insert into vg (sname,snum) values ('吕布',1); insert into vg (sname,snum) values ('廖化',15);
select * from vg; +--------+-----+-------+------+------+-------+ | sname | age | socre | test | age1 | snum | +--------+-----+-------+------+------+-------+ | 刘备 | 28 | 0 | 0 | 0 | 00000 | | 张飞 | 0 | -1 | 0 | 0 | 00000 | | test | 0 | 0 | 255 | 0 | 00000 | | M1 | 0 | 0 | 0 | 3 | 00000 | | agin M | 0 | 0 | 0 | 99 | 00000 | | 吕布 | 0 | 0 | 0 | 0 | 00001 | | 廖化 | 0 | 0 | 0 | 0 | 00015 | +--------+-----+-------+------+------+-------+
#比较上一个显示,能看出M和zerofill结合的意义
#总结:M表示补0的宽度,和zerofill结合使用才有意义
char(M) 定义之后每个列的存储长度是固定的,M个固定编码(utf8,gbk)长度 (查询速度比较快,造成一定资源浪费)
类比于:不管远近,投币一元的公交,对短途造成浪费
varchar(M) 长度可以是(0--<M) 根据具体存入的字符个数决定(会加入一个头记录记录字符的长度,用于查找)(查询速度稍慢,资源利用率一定程度会比较高)
类比于:分段收费,需要增加一个售票员记录远近收费
以上就是mysql 列类型的内容,更多相关内容请关注PHP中文网(www.gxlcms.com)!