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

mysql中int型长度

在MySQL中,INT 是一种整数数据类型,用于存储整数值。INT 类型的长度通常指的是显示宽度,而不是存储大小或值的范围。显示宽度是指当数值与列宽相比过小时,在显示或打印时从左侧填充的零的数量。然而,需要注意的是,显示宽度不会限制整数的值的范围。

基础概念

  • 数据类型:MySQL中的数据类型定义了列中可以存储的数据的种类。
  • 整数类型:MySQL提供了多种整数类型,包括TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
  • 显示宽度INT 类型的一个可选属性,用于指定在显示时整数值的最小宽度。

类型

INT 类型有以下几种形式:

  • INT:标准的4字节整数,范围是 -2147483648 到 2147483647。
  • INT(宽度):例如 INT(11),这里的宽度指的是显示宽度,不影响存储或值的范围。
  • UNSIGNED INT:无符号的4字节整数,范围是 0 到 4294967295。
  • ZEROFILL:当与INT一起使用时,会在数值的左侧填充零以达到指定的显示宽度。

应用场景

INT 类型通常用于存储不需要小数部分的数值,例如:

  • 用户ID
  • 订单编号
  • 产品数量
  • 日期(使用UNIX时间戳)

示例代码

代码语言:txt
复制
CREATE TABLE example (
    id INT(11) ZEROFILL AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    order_number INT(10) NOT NULL,
    product_quantity INT UNSIGNED NOT NULL
);

在这个例子中,id 列使用了ZEROFILL属性来填充零以达到11位的显示宽度,order_number 列指定了10位的显示宽度,而product_quantity 列使用了无符号整数类型。

参考链接

常见问题及解决方法

问题:为什么设置了INT(宽度),但显示时并没有按预期填充零?

原因INT(宽度) 中的宽度只是用于显示,不会影响存储的值。如果数值超过了指定的宽度,它仍然会完整显示。

解决方法:确保使用ZEROFILL属性来启用零填充。

代码语言:txt
复制
ALTER TABLE example MODIFY order_number INT(10) ZEROFILL;

问题:为什么INT类型的列不能存储小数?

原因INT 是整数类型,设计用来存储没有小数部分的数值。

解决方法:如果需要存储小数,应该使用浮点数类型,如FLOATDOUBLE,或者定点数类型,如DECIMAL

代码语言:txt
复制
ALTER TABLE example ADD COLUMN price DECIMAL(10, 2);

以上就是关于MySQL中INT类型长度的基础概念、类型、应用场景以及常见问题的解答。

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

相关·内容

mysql中int长度的意义

提问: 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 手册) ?...但有一点看完该文档你应该清楚的知道, 长度 M 与你存放的数值型的数的大小无关.

    3.6K20

    mysql存储long型数据_int数据类型

    许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。...类型 在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。...例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。...并且效果与 INT 数据类型相同。 字符串类型 MySQL 提供了 8 个基本的字符串类型,可以存储的范围从简单的一个字符到巨大的文本块或二进制字符串数据。...ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。

    3.9K30

    聊聊Mysql中的int(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

    为什么Java中int型数据取值范围是

    1、为什么Java中int型数据取值范围是[-2^31,2^31-1],多么神奇的问题,网上找了很多,找不到点子上,自己瞎总结一下子。   ...1.1、int是Java中的8种基本类型之一,一个int值占4个字节byte,一个字节是8位bit(即8个二进制位),所以int型占32位。...2、为什么Java中int型数据取值范围是[-2^31,2^31-1]。即-2147483648 ~ 2147483647。   ...2.1、因为int型数据类型是有符号位的,所以这里拆分为两部分,一部分是正数,一部分是负数进行观察。     1)、正数的范围是从1 ~ 2147483647的。       ...注意,这个补码并不是真正的补码,-2147483648真正的补码是1 1000 0000 0000 0000 0000 0000 0000 0000,在Java的int基本数据类型中溢出了。

    4.7K30

    str 数字强制转int型

    str[i] 数字强制转int型 X=(int)(str[i]-48);程序标注“将x转换成int型。”我不明白为啥减掉48,str是char型数组!...这样正好是char型减去48就是它对应的int值 不过这样写不好理解,直接写成str[i]-‘0’就好。...其实ascii码值为0x31,而’0’的ascii码是0x30,用str[i]-'0’就得到了1 c语言中单引号是什么意思 单引号一个数,代表一个字符,如果单引号内是数值,那输出的结果是ASCII码中对应的字符...; 双引号一个字符或几个字符,代表是一个字符串 双引号里面的是字符串 而单引号里面的代表字符 朋友 你可以这样理解 只要是在双引号里面的不代表任何表达式的意义 假如 int a=10 cout<<“a...”; 这是用 双引号 它在屏幕上就是 a 而 int a=10 coutint a=10 cout<<‘a’;将会是65 因为用单引号里面的代表字符

    1.4K10

    MySql中int(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 中的 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.3K20
    领券