自我总结,欢迎拍砖!
目的:定义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命令时,可以用英文状态下的分号“;”来分割。