首页 > 代码库 > mysql 我们眼中的int(10)

mysql 我们眼中的int(10)

自我总结,欢迎拍砖!

目的:定义int(3)和int(10)真的有区别吗?

 

分别定义一个student,student2表

  create table student(id int(5) not null primary key,name varchar(20));

  create table student2(id int(10) not null primary key,name varchar(20));

分别在这两个表中插入一条数据:

  insert into student set id =007,name =‘tom‘;insert into student2 set id =007,name =‘tom‘;

查询一下两个表的记录:

   select * from student,student2;

发现没什么区别。

那么给student2表id字段加一个属性值 [ zerofill ]:

  alter table student2 drop primary key;alter table student2 modify id int(10) zerofill primary key;

  (修改主键字段属性时,需要先解除主键关联。否则会报“重复主键”错误)

此时,再查一下两个表,会发现:

student2表中id的长度为10,现在知道 [ zerofill ]属性的作用了吧:将id的值用0补全至id的长度10

可以修改id的长度试一试,例如改成int(3),int(5),int(10),其实并不影响id的实际长度。

例如给student表写入一条记录:

  insert into student set id = 555555,name =‘test007‘;

我们会发现:

即使student表id的长度是5,也不会影响id长度大于5的记录的显示。

 

总结:定义数据库int字段时,一般不需要设置它的长度,若非要设置则可以加属性 [ zerofill ]区分。

 

PS:1)不管设置成int(?),int实际长度都是用4个字节(32位,最高位区分正负数),所以最大值为:2^31,大概20亿左右(10位10进制的数)。

   2)清空表命令:truncate table student;

   3)命令行执行多个SQL命令时,可以用英文状态下的分号“;”来分割。

 

mysql 我们眼中的int(10)