首页
学习
活动
专区
圈层
工具
发布

mysql int和bigint

基础概念

MySQL中的INTBIGINT都是整数数据类型,用于存储整数值。它们的主要区别在于存储范围和存储空间。

  • INT:占用4个字节,可以存储的范围是-2147483648到2147483647(有符号),或者0到4294967295(无符号)。
  • BIGINT:占用8个字节,可以存储的范围是-9223372036854775808到9223372036854775807(有符号),或者0到18446744073709551615(无符号)。

相关优势

  • INT:适用于大多数常规的整数存储需求,因为它占用的空间较小,查询速度相对较快。
  • BIGINT:适用于需要存储大整数的场景,如用户ID、订单号等,因为它提供了更大的数值范围。

类型

  • 有符号整数:可以表示正数、负数和零。
  • 无符号整数:只能表示非负数。

应用场景

  • INT:通常用于存储用户ID、产品ID、订单数量等。
  • BIGINT:用于存储超出INT范围的整数,如社交媒体平台上的帖子ID、时间戳(自1970年1月1日以来的秒数)等。

遇到的问题及解决方法

问题:为什么使用BIGINT而不是INT?

原因:当需要存储的整数超出了INT的范围时,必须使用BIGINT

解决方法

代码语言:txt
复制
CREATE TABLE example (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

问题:为什么使用INT而不是BIGINT?

原因:如果不需要存储超出INT范围的整数,使用INT可以节省存储空间并提高查询效率。

解决方法

代码语言:txt
复制
CREATE TABLE example (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

问题:如何选择合适的整数类型?

解决方法

  1. 评估需求:确定需要存储的整数的最大值和最小值。
  2. 选择类型:如果数值在INT范围内,选择INT;如果在BIGINT范围内,选择BIGINT
  3. 考虑性能INT通常比BIGINT更快,因为占用的空间更小。

参考链接

通过以上信息,您可以更好地理解MySQL中INTBIGINT的区别及其应用场景,并能够根据实际需求选择合适的数据类型。

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

相关·内容

MySQL中int、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 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。...在 SQL Server 中,int 数据类型是主要的整数数据类型。 在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。...只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。

9.8K30
  • MySQL INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT(整数类型)

    MySQL提供了多种数值型数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,所需的存储空间也会越大。...MySQL 主要提供的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,其属性字段可以添加 AUTO_INCREMENT 自增约束条件。...下表中列出了 MySQL 中的数值类型。...类型名称说明存储需求TINYINT很小的整数1个字节SMALLINT小的整数2个宇节MEDIUMINT中等大小的整数3个字节INT (INTEGHR)普通大小的整数4个字节BIGINT大整数8个字节从上表中可以看到...不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此应根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

    59510

    int、bigint、smallint 和 tinyint范围「建议收藏」

    INT[(M)] [UNSIGNED] [ZEROFILL]  M默认为11 从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据...int 的 SQL-92 同义字为 integer。   普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。   ...7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默认为20 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807...注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。...tinyint(1) 和 tinyint(4) 中的1和4并不表示存储长度,只有字段指定zerofill是有用, 如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002

    6.6K30

    mysql中int、bigint、smallint 和 tinyint的区别和存储的范围

    部门中有个字段存储的是十进制数字 , 但是表示的意思是转成二进制后 ,每一个位代表不同功能的开关状态 当超过32个功能开关的时候 , 就需要将int类型转换成bigint类型 , 原因就是int只能存储...4个字节也就是2的32次方的整型值 , 装不下了, 下面就是具体的存的范围 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807...int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。...int 的 SQL-92 同义字为 integer。 smallint 从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。...注释 在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。

    2.3K10

    mysql的数据类型int、bigint、smallint 和 tinyint取值范围

    int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。...int 的 SQL-92 同义字为 integer。 smallint 从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。...注释 在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。...在 SQL Server 中,int 数据类型是主要的整数数据类型。 在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。...只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。

    5.2K31

    MySQL的int (10) 和 int (11) 的区别

    一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数)。 那取值范围和显示宽度到底有什么关系呢?...test_id_2 显示宽度为 4 两字段,接下来插入数据,同时插入 - 128、1 和 127 这些数值,看看会怎么样。...同理,所以 int (10) 和 int (11) 无任何区别,就是显示宽度不同。...Mysql 可以为整数类型指定宽度,例如 INT (11),对大多数应用这是没有意义的:他不会限制值的合法范围,只是规定了 Mysql 的一些交互工具,如 Mysql 命令行客户端,用来显示字符的个数。...对于存储和运算来说, INT (1) 和 INT (8) 是相同的。 是的,设置自动填充的时候用来显示补充0有点 用而已

    2.7K30

    如何将生产环境的字段类型从INT修改为BIGINT

    本文描述了我如何计划和执行从INT到BIGINT数据类型的更改。该技术在单独的SQL服务器实例上创建表的新副本,并使用BIGINT数据类型,然后使用对象级恢复将其移到生产数据库中。...我个人怀疑这个方案是否满足条件,包括维护和性能。 另一个方案就是建议使用INT的负值。这意味着要重新设定INT从-1 到-2.147 billion 行,这也只是短时间的解决问题。...就是去创建一个副本表,唯一不同就是使用BIGINT代替INT,然后小批量的赋值数据,保证两个表示同步,通过使用cdc或者触发器来捕捉原表的修改完成对目标表的插入。...在验收和生产过程中,流程按照以下步骤进行: 将生产数据库的完整数据库备份恢复到开发/测试环境。 在还原的数据库中,用BIGINT代替INT创建副本表。...总得来说,标准方法和后面的方法都是比较好的方式,同时确保数据的完整性是第一位的。 我介绍的方法最小化了停机时间和影响生产服务器性能的潜力,同时它允许我在单独的开发实例上完成大部分工作。

    5.5K10

    如何将生产环境的字段类型从INT修改为BIGINT

    本文描述了我如何计划和执行从INT到BIGINT数据类型的更改。该技术在单独的SQL服务器实例上创建表的新副本,并使用BIGINT数据类型,然后使用对象级恢复将其移到生产数据库中。...我个人怀疑这个方案是否满足条件,包括维护和性能。 另一个方案就是建议使用INT的负值。这意味着要重新设定INT从-1 到-2.147 billion 行,这也只是短时间的解决问题。...就是去创建一个副本表,唯一不同就是使用BIGINT代替INT,然后小批量的赋值数据,保证两个表示同步,通过使用cdc或者触发器来捕捉原表的修改完成对目标表的插入。...在验收和生产过程中,流程按照以下步骤进行: 将生产数据库的完整数据库备份恢复到开发/测试环境。 在还原的数据库中,用BIGINT代替INT创建副本表。...总得来说,标准方法和后面的方法都是比较好的方式,同时确保数据的完整性是第一位的。 我介绍的方法最小化了停机时间和影响生产服务器性能的潜力,同时它允许我在单独的开发实例上完成大部分工作。

    7.6K80

    mysql存储手机号为什么不用bigint?

    bytes 从容量和速度上看,bigint是最好的选择。...4.在32位的某些应用中,bigint太大,会溢出,要进行各种转换,很麻烦。 5.手机号可能有-(座机),用int存不了。...and操作; 对于bigint的优势,对其进行分析: 空间占用:对于一个存放4位区号(不太可能,这里取4位为了计算最大的空间占用差距)和11号码的bigint和varchar,一个号码bigint...;可是涉及到所有有手机号的字段都需要建立0~9 10个分表,这实在是代价有点大;也不能varchar和int混用,否则int那点可能存在的效率上的优势会被转换消化掉; 没有扩展性,如果将来手机号演变为2...那int实现的扩展性将是致命的; 分析下来,int或许有些许性能优势,但其带来的复杂度和扩展上的劣势让我根本都不必动手,就打消了念头了;唉,也许这就是为什么大多数公司选择varchar存储手机号的原因吧

    4.1K20
    领券