int(4)、int(8)、int(11) 分别占用几个字节 ? 您所在的位置:网站首页 贴吧id是几位数字 int(4)、int(8)、int(11) 分别占用几个字节 ?

int(4)、int(8)、int(11) 分别占用几个字节 ?

2023-08-18 01:54| 来源: 网络整理| 查看: 265

文章目录 MySQL 数据类型介绍数值类型日期/时间类型字符串类型 int(4)、int(8)、int(11) 分别占用几个字节 ?MySQL 中的整数型数据类型:不同整数类型的取值范围:回归正题,int(4)、int(8)、int(11) 究竟占用几个字节呢 ?再举个例子说明每种数据类型的默认显示宽度总结一下 探讨这个问题之前,我们先来回忆一下 MySQL 支持存储的数据类型有哪些 ?

在这里插入图片描述

MySQL 数据类型介绍

MySQL 支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型。

数值类型 整数类型:tinyint、smallint、mediumint、int、bigint;浮点小数类型:float 、double;定点小数类型:decimal 日期/时间类型

year、time、date、datetime、timestamp

字符串类型

char、varchar、binary、varbinary、blob、text、enum、set 等

由于本篇文章重点讨论 int(integer)占用字节的问题,其所属整数型数据类型,所以下面从整型数据类型讲起

int(4)、int(8)、int(11) 分别占用几个字节 ? MySQL 中的整数型数据类型: 类型名称说明存储需求tinyint很小的整数1 个字节smallint小的整数2 个字节mediumint中等大小的整数3 个字节int(integer)普通大小的整数4 个字节bigint大整数8 个字节

从上表中可知,不同类型整数存储所需的字节数是不同的,占用字节数最小的是 tinyint 类型,占用字节最大的是 bigint 类型,相应的占用字节越多的类型所能表示的数值范围越大。根据占用字节数可以求出每一种数据类型的取值范围,例如 tinyint 需要 1 个字节(8 bits)来存储,那么 tinyint 无符号数的最大值为 28,即 255。tinyint 有符号数的最大值是 2^7 - 1,即 127。其他类型的整数的取值范围计算方法相同,如下表所示:

不同整数类型的取值范围: 数据类型有符号无符号tinyint-128~1270~255smallint-32768~327670~65535mediumint-8388608~83886070~16777215int(integer)-2147483648~21474836470~4294967295bigint-9223372036854775808~92233720368547758070~18446744073709551615 回归正题,int(4)、int(8)、int(11) 究竟占用几个字节呢 ?

答案已经在上面写明啦已经呼之欲出啦,他们都是 4 个字节。

在这里插入图片描述

我们以 int(11) 为例来说,11 代表该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。

再举个例子,假设声明一个 INT 类型的字段:

id int(4);

该声明指明,在 id 字段中的数据一般只显示 4 位数字的宽度。

注意:显示宽度和数据类型的取值范围是无关的。显示宽度只是指明 MySQL 最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。例如:假如向 id 字段插入一个数值 19999,当使用 select 查询该列值的时候,MySQL 显示的将是完整的带有 5 位数字的 19999,而不是 4 位数字的值。

再举个例子说明每种数据类型的默认显示宽度

创建表:

create table test (x tinyint, y smallint, z mediumint, m int, n bigint);

查看表结构: 在这里插入图片描述 可以看到,系统将添加不同的默认显示宽度。这些显示宽度能够保证显示每一种数据类型可以取到取值范围内的所有值。例如,tinyint 有符号数和无符号数的取值范围分别为 -128~127 和 0~255,由于负号占了一个数字位,因此 tinyint 默认的显示宽度为 4。同理,其他证书类型的默认显示宽度与其有符号数的最小值的宽度相同。

不同的整数类型有不同的取值范围,并且需要不同的存储空间,因此,应该根据实际需要选择最合适的类型,这样有利于提高查询的效率和节省存储空间。

总结一下

显示宽度只用于显示,并不能限制取值范围和占用空间,如:int(3) 会占用 4 个字节的存储空间,并且允许的最大值也不会是 999,而是 int 整型所允许的最大值。

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有