MySQL整数类型说明 int(11) vs int(20)

整数类型后面跟的是显示的宽度。M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关。

实践出真知:

mysql> create table test2 ( a int , b int(20) unsigned not null , c int(40) unsigned zerofill ) engine = innodb ;

Query OK, 0 rows affected (0.06 sec)

 

mysql> show create table test2;

+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                                                        |

+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| test2 | CREATE TABLE `test2` (

`a` int(11) DEFAULT NULL,

`b` int(20) unsigned NOT NULL,

`c` int(40) unsigned zerofill DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

给表插入记录。

mysql> insert into test2  values(1,2000000, 34823424);

Query OK, 1 row affected (0.04 sec)

mysql> select * from test2;

+------+---------+------------------------------------------+

| a    | b       | c                                        |

+------+---------+------------------------------------------+

|    1 | 2000000 | 0000000000000000000000000000000034823424 |

+------+---------+------------------------------------------+

mysql> alter table test2  add d int(256) not null;

ERROR 1439 (42000): Display width out of range for column ‘d‘ (max = 255)

从以上测试可以说明以下:

1:对于整形数据类型,数据存储所占的字节数是固定长度的。比如

  INT[(M)] [UNSIGNED] [ZEROFILL] 。

 

其中

 

M指示最大显示宽度。最大有效显示宽度是255。当插入的表的字段数据长度小于设定的INT(M)最大长度的时候,检索出来的数据会自动空格补充。

 

2:zerofill(补零),当实际插入的数据长度小于建表的时候设定的长度时候,它会从左开始补零。这个修饰符可以防止MySQL存储负值。

 

3:对于建表的时候,不指定INT的显示长度,系统会自动预设显示长度大小。

时间: 2025-01-06 01:03:52

MySQL整数类型说明 int(11) vs int(20)的相关文章

MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间. 当加有UNSIGNED后,数字可以从0增加到255大小. [email protected] : test 22:36:25> create table ti(id tinyint(9), no tinyint(1)); Query OK, 0 rows affected (0.03 sec) [email protected] : test 22:36:44> ins

MySQL整数类型说明 int(5) vs int(7)

今天突然发现, mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用.位数限制基本没有意义. int(5) 这里的5表示的是 最短显示5个字符. int(7)这里的7表示的是 最短显示7字符.当插入的字符长度超过(m)时,相当于啥都没发生:当字符长度小于(m)时,就需要指定拿某个字符来填充,比如zerofill(表示用0填充). 比如int(5),插入数据为1234,若不填充0,显示的则是1234,填充0,显示的就是0123

mysql中int(11)

作为SQL标准的扩展,MySQL也支持整数类型TINYINT.MEDIUMINT和BIGINT. mysql int(M),M表示显示宽度和存储无关,int是4个字节. mysql数据库的有符号int能存2^31-1~-2^31-1,转成十进制是个有10位数的数字,int(11)表示可以最多显示10位的负数,如果显示的是正数的话最多10位,因为有符号的int只能存10位(字面显示长度)

mysql int(3)与int(11)的区别

总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果int(3)和int(10)不加zerofill,则它们没有什么区别.M不是用来限制int个数的.int(M)的最大值和最小值与undesigned有关,最下面那副图有说明. mysql> create table t (t int(3) zerofill);Query OK, 0 rows affe

int(11)最大长度是多少,MySQL中varchar最大长度是多少(转)

int(11)最大长度是多少,MySQL中varchar最大长度是多少? int(11)最大长度是多少? 在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度. 这个11代表显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节. int是整型,(11)是指显示字符的长度,但要加参数的,最大为255,比如它是记录行数的id,插入10笔资料,它就显示0

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整数数据类型int

一.int类型说明 id int(M) [UNSIGNED] [ZEROFILL] 字段名 字段类型(显示长度,创建表时不指定显示长度) [无符号] [前导填充] unsigned 01:int (M)后面加上unsigned,就是无符号,只可插入正整数,其范围: 0~4294967295; 02:4字节就是32位,那么2的32次方减1就是4294967295; 03:因为加了unsigned,就是正整数,也就是无符号,所以范围是0~4294967295; 04:4294967295的长度是10

23、给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 1 class Solution { 2 public: 3     double Power(double base, int exponent) { 4         int p = abs(exponent); 5       double r = 1.0; 6         while(p){ 7             if(p != 0) r *= base; 8   

【MySQL 】MySQL 中的 int(11) 到底代表什么意思?

一.前言二.简介三.结论四.参考链接 一.前言   在工作中经常要与 mysql 打交道,但是对 mysql 的各个字段类型一直都是一知半解,因此写本文总结记录一番. 二.简介   对于 int 类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的 int(11) 代表什么意思,很长时间以来我都以为这代表着限制 int 的长度为 11 位,直到有天看到篇文章才明白,11 代表的并不是长度,而是字符的显示宽度,在字段类型为 int 时,无论你显示宽度设置为多少,int 类型能存储的最大