首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 中的int长度

MySQL中的INT是一种整数数据类型,用于存储整数值。INT类型的长度是指其存储值的范围大小,而不是指实际的存储空间大小。INT类型有以下几种长度:

  1. TINYINT: 存储范围为 -128 到 127(有符号),或 0 到 255(无符号)。占用1个字节。
  2. SMALLINT: 存储范围为 -32768 到 32767(有符号),或 0 到 65535(无符号)。占用2个字节。
  3. MEDIUMINT: 存储范围为 -8388608 到 8388607(有符号),或 0 到 16777215(无符号)。占用3个字节。
  4. INT: 存储范围为 -2147483648 到 2147483647(有符号),或 0 到 4294967295(无符号)。占用4个字节。
  5. BIGINT: 存储范围为 -9223372036854775808 到 9223372036854775807(有符号),或 0 到 18446744073709551615(无符号)。占用8个字节。

在实际使用中,INT类型的长度通常不需要显式指定,因为MySQL会根据需要自动选择合适的长度。例如,当你定义一个INT类型的列时,MySQL会默认使用4个字节的INT类型。

应用场景:

  • TINYINT常用于存储小范围的整数值,如性别(0表示男,1表示女)。
  • SMALLINT适用于存储稍大一些的整数值,如年龄、班级编号等。
  • MEDIUMINT适用于存储中等范围的整数值,如考试成绩、库存数量等。
  • INT是最常用的整数类型,适用于大多数场景,如用户ID、订单编号等。
  • BIGINT适用于存储非常大的整数值,如自增主键、时间戳等。

优势:

  • 整数类型占用的存储空间较小,查询速度较快。
  • 整数类型可以进行各种数学运算,如加法、减法、乘法、除法等。
  • 整数类型可以用于索引,提高查询效率。

遇到的问题及解决方法:

  1. 当存储的值超出INT类型的范围时,会出现溢出错误。解决方法是根据实际需求选择合适长度的整数类型,或者使用BIGINT类型。
  2. 当需要存储小数时,不能使用整数类型。解决方法是使用DECIMALFLOAT类型来存储小数。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysqlint长度意义

提问: mysql字段,unsigned int(3), 和unsinged int(6), 能存储数值范围是否相同。如果不同,分别是多大?...回答: 不同,int(3)最多显示3位无符号整体,int(6)最多显示6位无符号数。 如果你答案和上面的一致,恭喜你和我犯了一样错误。...发现,无论是int(3), int(6), 都可以显示6位以上整数。但是,当数字不足3位或6位时,前面会用0补齐。...查下手册,解释是这样MySQL还支持选择在该类型关键字后面的括号内指定整数值显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定列宽度值时从左侧填满宽度。...也就是说,int长度并不影响数据存储精度,长度只和显示有关,为了让大家看更清楚,我们在上面例子建表语句中,使用了zerofill。

3.9K10
  • 详解 mysql int 类型长度值问题

    秉着好奇心, 打开了 google ~ 引入大神解答. mysql 在建表时候 int 类型后长度代表什么? 是该列允许存储值最大宽度吗?...为什么我设置成 int(1), 也一样能存 10,100,1000 呢. 当时我虽然知道 int(1), 这个长度 1 并不代表允许存储宽度, 但却没有一个合理解释....或者说对这个长度也没有真正研究过到底代表什么, 平时都用 int(11), 也不知道为什么要 11 位....所以我在网上查阅了一些资料, 也仔细看了 mysql 手册关于 int data type 说法. 以下是每个整数类型存储和范围 (来自 mysql 手册) ?...mysql 我们看到现在我 number 字段, 长度 (M)=5, 属性 =UNSIGNED ZEROFILL(无符号, 用 0 来填充位数), 设置这个属性后我往表时插入数据, 系统会自动把 number

    3.5K20

    聊聊Mysqlint(1)

    昨天有个读者问了我这样一个问题在mysql建表时候,我设置一个字段为int类型,长度为1,但是我发现这个字段却可以存储任意长度数字,这是什么情况?...Zerofill:零填充,意思就是达不到指定长度后,前面用 0 来填充。 现在再来看看这个int(1)1究竟有什么奥秘。这个1跟这个字段能存数据范围没关系,它也不是限制这个字段数据长度。...这个1只是规定了数据宽度,如果你选择了Zerofill属性,就能更好地理解这个1了,如果我们写入数据达不到这个长度,那么就会在数据前面补0来达到这个长度。...比如我们将int(1)改成int(3),我们再输入1,实际上显示是001。所以无论你将 int 类型长度设为多少并不会影响数据存储范围。...mysql对于整型数据类型,不仅给我们提供了int,还提供了tinyint,smallint,mediumint和bigint。

    1.9K20

    MySQL索引长度限制

    参考: http://dinglin.iteye.com/blog/1681332 单列索引长度限制     (5.6里面默认不能超过767bytes,5.7不超过3072bytes):     起因是...255×4>767, 于是增加了一个参数叫做 innodb_large_prefix     # 256由来: 只是因为char最大是255,所以以前程序员以为一个长度为255index就够用了,...--- by 阿里-丁奇 在MySQL5.6里默认 innodb_large_prefix=0 限制单列索引长度不能超过767bytes    官网文档:https://dev.mysql.com/doc...在MySQL5.7里默认 innodb_large_prefix=1 解除了767bytes长度限制,但是单列索引长度最大还是不能超过3072bytes 联合索引长度限制 (不能超过3072bytes...idx_a长度为:255*3*5= 3825 bytes ,大于最大值 3072 bytes  为什么3072,原因如下:    我们知道InnoDB一个page默认大小是16k。

    5.4K30

    MySQLMySQL int(11) 到底代表什么意思?

    一、前言   在工作中经常要与 mysql 打交道,但是对 mysql 各个字段类型一直都是一知半解,因此写本文总结记录一番。 二、简介 ?   ...对于 int 类型一些基础知识其实上图已经说很明白了,在这里想讨论下常用 int(11) 代表什么意思,很长时间以来我都以为这代表着限制 int 长度为 11 位,直到有天看到篇文章才明白,11...代表并不是长度,而是字符显示宽度,在字段类型为 int 时,无论你显示宽度设置为多少,int 类型能存储最大值和最小值永远都是固定,这里贴一些原文片段。   ...三、结论 从上个例子我们可以得出以下几个结论:   1、如果一个字段设置了无符号和填充零属性,那么无论这个字段存储什么数值,数值长度都会与设置显示宽度一致,如上述例子字段 b,插入数值 1 显示为...10 位数字;   3、设置字符宽度只对数值长度不满足宽度时有效,如 d 字段 int(5),插入 1 时,长度不足 5,因此在左边补充 4 个零直到 5 位,但是插入 1234567890 时超过了

    3.2K20

    MySQLint (10) 和 int (11) 区别

    mysql 整数数据类型 不同类型取值范围 不同数据类型默认显示宽度 显示宽度跟负号没有关系,它只在人工设置了 ZEROFILL 属性有效。...如果插入了大于显示宽度值,只要该值不超过该类型整数取值范围,数值依然可以插入,而且能够显示出来。 同理,所以 int (10) 和 int (11) 无任何区别,就是显示宽度不同。...在存储方面确实没什么不同,设置长度只有在设置了自动填充 ZEROFILL 时候才体现出来, 比如 id=1 长度int (5) 的话会显示 00001。...Mysql 可以为整数类型指定宽度,例如 INT (11),对大多数应用这是没有意义:他不会限制值合法范围,只是规定了 Mysql 一些交互工具,如 Mysql 命令行客户端,用来显示字符个数。...对于存储和运算来说, INT (1) 和 INT (8) 是相同。 是的,设置自动填充时候用来显示补充0有点 用而已

    1.8K30

    MySQL字节、编码、长度、值关系 原

    都能存入n个字符,仅是实际字节长度有所区别 2.MySQL指定整数值显示宽度(例如,INT(4))。...无论是unsigned int(3)或 unsiend int(6),存储都是4字节无符号整数, 也就是0~2^32。...建立这个长度是为了告诉MYSQL数据库我们这个字段存储数据宽度为5位数,  当然如果你不是5位数(只要在该类型存储范围之内)MYSQL也能正常存储 在Java中一共有八种基本数据类型。...他们分别是byte、short、int、long、float、double、char、boolean 整型 其中byte、short、int、long都是表示整数,只不过他们取值范围不一样 byte...根据int类型允许存储字节数是4个字节, 我们就能换算出int UNSIGNED(无符号)类型能存储最小值为0, 最大值为4294967295(即4B=32b, 最大值即为32个1组成); 浮点型

    2.5K30

    MySqlint(10)与int(11)有什么区别吗?

    0 1 引言 依稀还记得有次面试,有面试官问我int(10)与int(11)有什么区别,当时觉得就是长度区别吧!面试官最后也没有给反馈,我也就以为自己答对了。...最后查出结果是:这里M代表并不是存储在数据库具体长度,以前总是会误以为int(3)只能存储 3个长度数字,int(11)就会存储 11 个长度数字,这是大错特错。...0 2 知识点 int(M) M指示最大显示宽度,最大有效显示宽度是 255,且显示宽度与存储大小或类型包含范围无关。...MySQL 类型关键字后面的括号内指定整数值显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定列宽度值时从左侧填满宽度。...0 3 总结 所以,int(2) 与int(11)后括号字符表示显示宽度,整数列显示宽度与 MySQL 需要用多少个字符来显示该列数值,与该整数需要存储空间大小都没有关系,int类型字段能存储数据上限依旧是

    4.3K30

    MySQL需要注意字段长度问题

    MySQL表结构设计,突然想起来几个地方碰到问题比较多,大体来说一个就是字符集,一个就是数据类型。 而字符集和数据类型结合起来,就有一个蛮有意思细节,那就是行长度问题。...其中计算方式就需要理解了,因为varhcar类型长度大于255,所以需要2个字节存储值长度,而MySQL里面的页单位是16k,使用了IOT方式来存储。...所以如果超过了这个长度,那就会有溢出情况,和Oracleoverflow很类似。...所以对于gbk类型,行长度最大为65535,则varchar列最大长度算法就是 (65535-2)/2 =32766.5,所以此处就是32766了。...它长度就不一样了,对应是1字节,所以varchar(32767)是没有任何问题,而最大长度就是65532了。

    2.2K60

    mysql int(5) 到底有是多长?

    在设计 mysql 表字段时,int(5) 表示是该字段长度为 5 吗?如果你觉得是,那请你继续往下看,相信你会有新收获。...#插入一条大数据 insert into test (length) values (123456789); 结果证明 int(5) 能插入长度大于 5 数据,所以现在可以肯定int(5) 并不是代表数据宽度...+------------+-----------+ |  1          | 123456789           | +------------+-----------+ 在 mysql ...int 字段长度其实是固定,就是 4 个字节,不管你 int(11)  还是 int(5) 字段长度就是固定 4 个字节。...tinyint、smallint、mediumint、int、bigint 这几个类型,这几个整数类型才代表了固定长度,具体长度请看下面这个表格。

    2.2K30

    MySQLint、bigint、smallint 和 tinyint区别详细介绍

    最近使用mysql数据库时候遇到了多种数字类型,主要有int,bigint,smallint和tinyint。其中比较迷惑int和smallint差别。...P.S. bigint已经有长度了,在mysql建表length,只是用于显示位数 int 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647...但是,bigint 用于某些特殊情况,当整数值超过 int 数据类型支持范围时,就可以采用 bigint。在 SQL Server int 数据类型是主要整数数据类型。...SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。 int(M) 在 integer 数据类型,M 表示最大显示宽度。...在 int(M) ,M 值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 存储空间。

    5.8K30

    mysql前缀索引 默认长度_如何确定前缀索引长度

    MySQL5.7里默认 innodb_large_prefix=1 解除了767bytes长度限制,但是单列索引长度最大还是不能超过3072bytes。...https://dev.mysql.com/doc/refman/8.0/en/create-index.html varchar(n)占用几个字节跟字符集有关系: 字符类型若为gbk,每个字符占用2个字节...所以我们经常会见到把字段设置成varchar(255)长度,在utf8字符集下这个是最大不超过767bytes长度了,但是并不是一定要设置成varchar(255),还是要根据业务设置每个字段长度...解决办法 可以直接去改字段长度,或者说,把索引字段取消掉一些,但是这样改对表本身是不友好。 通过限定字段前n个字符为索引,可以通过衡量实际业务数据长度来取具体值。...,这个就是我们说前缀索引 修改单个索引最大长度 修改索引限制长度需要在my.ini配置文件添加以下内容,并重启: #修改单列索引字节长度为767限制,单列索引长度变为3072 innodb_large_prefix

    3.6K20
    领券