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命令时,可以用英文状态下的分号“;”来分割。

时间: 2024-10-19 07:13:28

mysql 我们眼中的int(10)的相关文章

mysql中int(1)与int(10)的区别

INT[(M)] [UNSIGNED] [ZEROFILL] 普通大小的整数.带符号的范围是-2147483648到2147483647.无符号的范围是0到4294967295. INT(1) 和 INT(10)本身没有区别,但是加上(M)值后,会有显示宽度的设置. 如代码所示: mysql> create table test(id int(3)); Query OK, 0 rows affected (0.47 sec) mysql> insert into test values(12)

mysql int(10)和int(11)区别

先说结论,对于存储和计算来说,int(10)和int(11)没有区别,10代表数字长度,但是int类型占用4个字节,取值范围是-2147483648~2147483647,也就是最大长度是10,如果写成int(11), 插入11位数的时候是插入不进去的,mysql会默认int最大10位(2147483647),2147483648也将插入不了.所以int(1)和int(20)是没有区别的,但是写int(20)会认为对mysql字段类型理解不到位.但是TINYINT和INT区别就大了,TINYIN

安装完 MySQL 后必须调整的 10 项配置(转)

英文原文:10 MySQL settings to tune after installation 译文原文:安装完 MySQL 后必须调整的 10 项配置 当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议.许多人在事后都非常惊讶,因为我们建议他们 仅仅改动几个设置,即使是这里有好几百个配置项.这篇文章的目的在于给你一份非常重要的配置项清单. 我们曾在几年前在博客里给出了这样的建议,但是MySQL的世界变化实在太快了! 写在开始前… 即使是经验老道的

mysql中timestamp,datetime,int类型的区别与优劣

mysql中timestamp,datetime,int类型的区别与优劣 int 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mysql提供的时间函数 结论:适合需要进行大量时间范围查询的数据表 datetime 1. 占用8个字节 2. 允许为空值,可以自定义值,系统不会自动修改其值. 3. 实际格式储存(Just stores what you have stored and retrieves the same thing

*p,(*p)[10],*p=new int[10],

int **p;   //一个指向指针的的指针,它指向的指针是指向一个整型数: int *e[10]    // 有10个指针,*e[0],*e[1]等: int (*f)[10];  //一个指向有 10 个整型数数组的指针,指针是一个: int *g(int);  //一个指向函数的指针,该函数有一个整型参数并返回一个整型数: int (*h[10])(int);  // 一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数: 顺带解释下动态内存的指针: in

Mysql中int(2)和int(10)的区别

int(N)中的N不是限制字段取值范围的,int的取值范围是固定的(0至4294967295)或(-2147483648至2147483647) 那么N这个值是为了在字段中的值不够时补零的,但是必须含有zerofill,例如 create table `type`(`id` int(8) zerofill unsigned NOT NULL,primary key(`id`))engine=InnoDB default charset=utf8; 如果插入8888,查看的数据应该为0000888

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号

MySQL SQL语句优化的10条建议

1.将经常要用到的字段(比如经常要用这些字段来排序,或者用来做搜索),则最好将这些字段设为索引 2.字段的种类尽可能用int或者tinyint类型.另外字段尽可能用not null 3.当然无可避免某些字段会用到text,varchar等字符类型,最好将text艾段的单独出另外一个表出来(用主键关联好) 4.字段的类型,以及长度,是一个很考究开发者优化功力的一个方面.如果表数据有一定的量了,不妨用PROCEDURE ANALYSE()命令来取得字段的优化建议!(在phpmyadmin里可以在查看