MySQL中BIGINT数据类型如何存储整数值

目录
  • 前言
  • MySQL BIGINT
  • 例子
    • 示例 1
    • 示例 2
    • 示例 3
    • 示例 4
  • 结论

前言

本文重点介绍 MySQL BIGINT 数据类型,并研究我们如何使用它来存储整数值。我们还将了解它的范围、存储大小和各种属性,包括有符号、无符号和零填充。

整数类型(精确值) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT

MySQL 支持 SQL 标准整数类型 INTEGER(或INT)和 SMALLINT. 作为标准的扩展,MySQL 还支持整数类型 TINYINTMEDIUMINT和 BIGINT. 下表显示了每种整数类型所需的存储空间和范围。

表 11.1 MySQL 支持的整数类型所需的存储和范围

类型 存储(字节) 签名的最小值 最小值无符号 签署的最大值 最大值无符号
TINYINT 1 -128 0 127 255
SMALLINT 2 -32768 0 32767 65535
MEDIUMINT 3 -8388608 0 8388607 16777215
INT 4 -2147483648 0 2147483647 4294967295
BIGINT 8 -263 0 263-1 264-1

MySQL BIGINT

BIGINT 是 ab 字节或 64 位整数值,在存储大整数值时非常有用。

MySQL BIGINT 与任何其他 MySQL 整数数据类型一样,可以是有符号或无符号的。有符号数据类型表示该列可以存储正整数和负整数值。这是 MySQL 中大多数整数类型的默认类型。因此,除非明确指定,否则任何整数类型列都可以存储正整数和负整数。

另一方面,无符号数据类型表示该列只能存储正整数值。

签名 MySQL BIGINT 类型的范围在 -9223372036854775808 和 9223372036854775807 之间

对于无符号 BIGINT 类型,取值范围为 0 到 18446744073709551615。

BIGINT 类型的另一个属性是 ZEROFILL。在列上指定此属性后,该列将自动设置为 UNSIGNED。

zerofill 属性也用零填充空格。

例子

让我们看几个例子来说明如何使用 BIGINT 类型。

CREATE DATABASE IF NOT EXISTS integers;
USE integers;

接下来,让我们创建一个表并用各种 BIGINT 列填充它,如下面的查询所示:

CREATE TABLE examples(x BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, y BIGINT UNSIGNED, z BIGINT ZEROFILL );

示例 1

让我们首先尝试将所有正值添加到表中:

INSERT INTO examples(x,y,z) VALUES (1,2,3);

在上面的示例查询中,这些值是可接受的,因为它们在有符号、无符号和 zerofill BIGINT 类型的范围内。

SELECT * FROM examples;
+---+------+----------------------+
| x | y    | z                    |
+---+------+----------------------+
| 1 |    2 | 00000000000000000003 |
+---+------+----------------------+
1 row in <strong>set</strong> (0.01 sec)

示例 2

在下一个案例中,让我们尝试添加所有负值。示例查询如下:

INSERT INTO examples(x,y,z) VALUES (-1,-2,-3);
ERROR 1264 (22003): Out of range value for column 'y' at row 1

在这种情况下,查询失败,因为 y 列是无符号的。因此,为列分配负值超出了列范围。

示例 3

我们可以观察到与上述第三列类似的情况。zerofill 属性自动使列无符号,使添加负值超出范围。一个例子是:

INSERT INTO examples(x,y,z) VALUES (-1,2,-3);
ERROR 1264 (22003): Out of range value for column 'z' at row 1

示例 4

现在让我们尝试添加每种类型的最大值。一个示例查询是:

INSERT INTO examples(x,y,z) VALUES (-9223372036854775808, 9223372036854775808, 9223372036854775808);

在上面的示例中,由于所有值都在范围内,因此查询成功执行。

考虑下面的查询:

INSERT INTO examples(x,y,z) VALUES (9223372036854775807, 9223372036854775808, 9223372036854775808);

您会注意到所有值都在最大值上。由于 x 列设置为 AUTO_INCREMENT,因此向其添加值将失败。

INSERT INTO examples(y,z) VALUES (9223372036854775808, 9223372036854775808);
ERROR 1062 (23000): Duplicate entry '9223372036854775807' for key 'examples.PRIMARY'

但是,如果在 MySQL 中禁用了严格模式,您可以插入超出范围的值。

SELECT * FROM examples;

结论

在本教程中,我们讨论了 MySQL BININT 类型及其各种属性的范围。

到此这篇关于MySQL中BIGINT数据类型如何存储整数值的文章就介绍到这了,更多相关MySQL BIGINT数据类型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql中int、bigint、smallint 和 tinyint的区别详细介绍

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容,留档做个总结: 使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储大小为 8 个字节. P.S. bigint已经有长度了,在mysql建表中的len

  • Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高

    目录 # 后数据准备 # sql查询速率测试 # sql分组速率测试 # sql排序速率测试 # 小结 数据库中可以用datetime.bigint.timestamp来表示时间,那么选择什么类型来存储时间比较合适呢? # 后数据准备 通过程序往数据库插入50w数据 数据表: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `time_date` datetime NOT NULL, `time_timestamp` ti

  • MySQL中BIGINT数据类型如何存储整数值

    目录 前言 MySQL BIGINT 例子 示例 1 示例 2 示例 3 示例 4 结论 前言 本文重点介绍 MySQL BIGINT 数据类型,并研究我们如何使用它来存储整数值.我们还将了解它的范围.存储大小和各种属性,包括有符号.无符号和零填充. 整数类型(精确值) - INTEGER.INT.SMALLINT.TINYINT.MEDIUMINT.BIGINT MySQL 支持 SQL 标准整数类型 INTEGER(或INT)和 SMALLINT. 作为标准的扩展,MySQL 还支持整数类型

  • mysql中decimal数据类型小数位填充问题详解

    前言 在开发过程中,我们往往会用到decimal数据类型.因为decimal是MySQL中存在的精准数据类型. MySQL中的数据类型有:float,double等非精准数据类型和decimal这种精准. 区别:float,double等非精准类型,在DB中保存的是近似值. Decimal则以字符串的形式保存精确的原始数值. decimal介绍: decimal(a,b) 其中:a指定指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38.b指定小数点右边可以存储的十进制数字的最大个数

  • mysql中整数数据类型tinyint详解

    目录 1.1 tinyint类型说明 1.2 实践环境说明 1.3 加unsigned属性 1.3.1 SQL模式开启严格模式 1.3.2 SQL模式未开启严格模式 1.4 加zerofill属性 1.4.1 SQL模式开启严格模式 1.4.2 SQL模式未开启严格模式 1.5 不加unsigned和zerofill属性 1.5.1 SQL模式开启严格模式 1.5.2 SQL模式未开启严格模式 1.1 tinyint类型说明 数据类型 显示长度 占用字节 有符号 无符号 tinyint 加上un

  • 浅谈MySQL中四种常用存储引擎

    MySQL常用的四种引擎的介绍 (1):MyISAM存储引擎: 不支持事务.也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表 支持3种不同的存储格式,分别是:静态表:动态表:压缩表 静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复:缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)ps:在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把

  • GO将mysql 中 decimal 数据类型映射到 protobuf的操作方法

    目录 protobuf中 float与double 1.如何在rpc中优雅取出dcemial类型 2.在rpc中 proto我们定义如下 2.1.proto - double 2.2.proto - float 3.在go-zero的sqlx中生成的model protobuf中 float与double 1.如何在rpc中优雅取出dcemial类型 例如我们在mysql中定义的一个字段如下: `discount` decimal(10,2) NOT NULL DEFAULT '0.00' CO

  • 设置MySQL中的数据类型来优化运行速度的实例

    今天看了一个优化案例觉的挺有代表性,这里记录下来做一个标记,来纪念一下随便的字段定义的问题. 回忆一下,在表的设计中很多人习惯的把表的结构设计成Varchar(64),Varchar(255)之类的,虽然大多数情况只存了5-15个字节.那么我看一下下面这个案例. 查询语句: SELECT SQL_NO_CACHE channel, COUNT(channel) AS visitors FROM xxx_sources WHERE client_id = 1301 GROUP BY client_

  • MySQL中的数据类型binary和varbinary详解

    前言 BINARY和VARBINARY与 CHAR和VARCHAR类型有点类似,不同的是BINARY和VARBINARY存储的是二进制的字符串,而非字符型字符串.也就是说,BINARY和VARBINARY没有字符集的概念,对其排序和比较都是按照二进制值进行对比. BINARY(N)和VARBINARY(N)中的N指的是字节长度,而CHAR(N)和VARCHAR(N)中N指的是的字符长度.对于BINARY(10) ,其可存储的字节固定为10,而对于CHAR(10) ,其可存储的字节视字符集的情况而

  • 聊聊MySQL中的存储引擎

    基础知识 在关系型数据库中每一个数据表相当于一个文件,而不同的存储引擎则会构建出不同的表类型. 存储引擎的作用是规定数据表如何存储数据,如何为存储的数据建立索引以及如何支持更新.查询等技术的实现. 在Oracle以及SqlServer等数据库中只支持一种存储引擎,故其数据存储管理机制都是一样的,而MySQL中提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎. 如处理文本文件可使用txt类型,处理图片可使用png类型 存储引擎 在My

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

    mysql 中整数数据类型: 不同类型的取值范围: 不同数据类型的默认v显示宽度: 显示的宽度跟负号没有关系,它只在人工设置了 ZEROFILL 属性有效.一旦人工设置了 ZEROFILL 属性,MySQL 会自动设置 UNSIGNED 属性(即 ZEROFILL 不能存储负数). 那取值范围和显示宽度到底有什么关系呢?利用 tinyint 做了个实验, 首先创建一张表如下: mysql> desc test_integer; +-----------+------------+------+-

  • 全面了解MySql中的事务

    最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元: 2. A账户扣除500元: 3. B账户增加500元: 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜.那如果A账

随机推荐