zerofill零填充
在创建表的时候,int或tinyint等后面的括号中的数据,很多人认为表示可以放多少个数字,例如tinyint(1)会认为只占1位,tinyint(2)会认为可以放0~99之间的数字,其实不是这样,mysql已经规定了每种类型可以放多少数据,这个字表示零填充
int每种类型的存储字节
举个例子:
创建一张表:create table test(id tinyint(1));
分别插入两条数据:
insert into test values(1);
insert into test values(100);
有人认为后边的100不能添加成功,或者只添加了“1”,其实不然:
select * from test;
1和100都在查询结果中
再举个例子,就可以清晰看明白:
创建一张表:create table test2(id1 tinyint(2) zerofill,id2 tinyint(3) zerofill);
insert into test2 values(2,3);
select * from test2;
这是得到的结果是02和003
小结:tinyint(n)其中的n表示当添加的整型长度不够时,用数字0在添加的整型前进行填充,这就是零填充。
varchar(n)的意义
在MySQL中,vachar后面的数字表示能保存的最大长度,举例说明:
创建一张表:create table test1(id int primary key auto_increment,name varchar(20) not null);
分别添加数字、字母、中文、英文符号、中文符号进行测试
insert into test1 values(1,'1234567890abcdefghij'); #数字和字母
insert into test1 values(2,'我是中文汉字我是中文汉字我是中文汉字是的'); #全中文
insert into test1 values(3,'我是中文汉字我是中文汉字我是中文汉字,,'); #中文和英文符号
insert into test1 values(4,'我是中文汉字我是中文汉字我是中文汉字!!'); #中文和中文字符
查询结果说明:正如上文所言,varchar(n)其中的n表示当前字段能保存的最大长度,中文或英文占用大小一样,即:最大可以保存n个字母,也可以保存n个汉字,倘若保存时,实际长度大于n,MySQL会报如下错误:
ERROR 1406 (22001): Data too long for column 'name' at row 1
上一篇:MySQL连表查询实用技巧
下一篇:简述MySQL优化的关键技术