首页 > 技术分享 > MySQL
收藏

MySQL零填充zerofill,int(n)和varchar(n)详解

07/27 18:20
大潇博客 原创文章,转载请标明出处

zerofill零填充


在创建表的时候,int或tinyint等后面的括号中的数据,很多人认为表示可以放多少个数字,例如tinyint(1)会认为只占1位,tinyint(2)会认为可以放0~99之间的数字,其实不是这样,mysql已经规定了每种类型可以放多少数据,这个字表示零填充

int.jpg

int每种类型的存储字节


举个例子:

创建一张表:create table test(id tinyint(1));

分别插入两条数据:

insert into test values(1);

insert into test values(100);

create.png


有人认为后边的100不能添加成功,或者只添加了“1”,其实不然:

select * from test;

select.png

1和100都在查询结果中


再举个例子,就可以清晰看明白:

创建一张表:create table test2(id1 tinyint(2) zerofill,id2 tinyint(3) zerofill);

insert into test2 values(2,3);

test2.png

select * from test2;

select1.png

这是得到的结果是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,'我是中文汉字我是中文汉字我是中文汉字!!'); #中文和中文字符

select2.png

查询结果说明:正如上文所言,varchar(n)其中的n表示当前字段能保存的最大长度,中文或英文占用大小一样,即:最大可以保存n个字母,也可以保存n个汉字,倘若保存时,实际长度大于n,MySQL会报如下错误:

ERROR 1406 (22001): Data too long for column 'name' at row 1


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311