暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL整数:INT、BIGINT等

原创 沐言倾心 2022-11-29
2428

译者注:如译文中有不精准或错误的地方,欢迎大家指正,互相学习。

MySQL有许多整数类型,虽然在大多数情况下INT类型似乎是正确的选择,但值得了解的是,有哪些选项能帮助您在数据库设计时做出正确的选择。在本文中,我们将介绍各种整数类型,并更深入地了解它们在MySQL中的存储方式。
图片.png

MySQL INT类型概述

整数只是一个整数。它可以是正数、负数甚至零。在MySQL中,实际上有几种不同的数据类型可以用来存储整数,每种数据类型都有自己的数字范围。标准INT类型最多可以存储4,294,967,296个值,包括0,除非另有说明,否则MySQL默认允许负数。定义INT列如下建表语句:

CREATE TABLE my_table (
	my_integer_col INT
);

由于MySQL默认允许负数和正数,因此my_integer_col能够存储-2,147,483,648到2,147,483,647的整数。如果没有更深入的计算机科学知识,这些非常具体的数字可能会显得很奇怪。这一切都与二进制工作以及数据库引擎如何存储数据有关。

MySQLINT类型和二进制系统

大多数现代世界使用以10为基数的数字系统,这意味着给定数字中的单个位置有10个可能的值(0-9)。一旦仓位达到允许的最大值,该数字将翻转并添加另一个仓位以表明该值已增加。

图片.png

这可能像是常识。毕竟,您可能从小就开始学习这个数字系统。但是,有不同的数字系统。二进制是这些数字系统之一,它是计算机最常用的数字系统。

二进制是一个以2为基数的数字系统。给定位置只有两个可能的值可用:0或1。无论可用值如何,一旦达到允许的最大值,位置会滚动。这会使二进制数看起来非常陌生。请注意下图中的位置如何滚动到二进制的每隔一个数字上,而不是每10个十进制数字。
图片.png

那么这一切与MySQL中的整数有什么关系呢?INT数据类型是有符号的32位值。这里的“位置”特指位。这意味着有32个位置可用于放置1或0,最左边的位用于表示数字是正数还是负数。以下是一个整型数在MySQL中的样子:

图片.png

不同的整型数据类型

整数类型还有更多,不止INT,确切地说还有四种。下表显示了可用的整数类型及其近似范围。
图片.png

注意TINYINT范围是**-128127**。这是因为0包含在带有有符号整数值的范围的上半部分。

有符号整数与无符号整数

在关于二进制的部分中,我注意到最左边的位用于确定该值是正数还是负数。MySQL实际上允许您修改此行为并将该位包含在存储的值中。这允许您在给定列中存储更大的数字,但代价是不能存储负数。在创建列时使用UNSIGNED关键字,您可以告诉MySQL这些值都应该是正数:

CREATE TABLE my_table (
	my_integer_col INT UNSIGNED
);


下面是上一节中的相同表,但进行了更新以显示每个整数类型可用的最大值。省略最小值,因为它将始终为0:
图片.png

关于整数宽度的说明

在本文前面,我演示了如何使用以下语法创建INT列:

CREATE TABLE my_table (
	my_integer_col INT
);

有时您可能会遇到一个整数列,其宽度定义为INT(5),而不是列的宽度。如果您熟悉其他类型,例如VARCHAR,您可能会认为这将更改MySQL允许您在该列中存储的允许范围或字符数,但整数并非如此。当与关键字ZEROFILL一起使用时,MySQL将自动用零填充值,直到定义的宽度。

以下是有关MySQL如何根据列定义存储和返回值的一些示例:
图片.png
作为最佳实践,我建议避免以这种方式使用整数列,因为它只会在返回数据后影响显示的值,并且这种逻辑最好留给使用MySQL的应用程序。

何时使用不同的MySQL整数类型

对于整数类型,主要归结为以下两个问题:

您需要存储负数吗?

如果您的答案是肯定的,那么您希望使用本文中描述的任何整数类型的有符号版本,否则选择无符号,因为您会自动使用更高的数字。

您需要存储多大的数字?

由于整数类型对可以存储的最大值都有硬上限,因此这将有助于确定在定义架构时应使用哪个值。还值得注意的是,较大的整数类型会占用更多的磁盘空间,因此在考虑使用哪种类型时请记住这一点。

原文标题:MySQL Integers: INT, BIGINT, and more
原文作者:Brian Morrison II
原文链接:https://planetscale.com/blog/mysql-data-types-integers

最后修改时间:2022-11-29 23:07:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论