我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL INT类型全解析

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL INT类型全解析

前言:

整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。

1.整型分类及存储范围

整数类型 字节 有符号范围 无符号范围
TINYINT 1 -128 ~ 127 0 ~ 255
SMALLINT 2 -32768 ~ 32767 0 ~ 65535
MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
INT/INTEGER 4 -2147483648 ~ 2147483647 0 ~ 4294967295
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615

表格一共有四列分别表示:字段类型, 占用字节数, 有符号范围, 无符号范围。
我们拿int类型为例:
int类型, 占用字节数为4byte, 学过计算机原理的同学应该知道, 字节(byte)并非是计算机存储的最小单位, 还有比字节(byte)更小的单位, 也就是位(bit),一个位就代表一个0或1; 8个位组成一个字节; 一般字节用大写B来表示byte, 位用小写b来表示bit.

计算机存储单位的换算: 1B=8b 1KB=1024B 1MB=1024KB

那么根据int类型允许存储的字节数是4个字节, 我们就能换算出int UNSIGNED(无符号)类型的能存储的最小值为0, 最大值为4294967295(即4B=32b, 最大值即为32个1组成,即4294967295换算成二进制则是32个1)。

2.存储范围测试


mysql> CREATE TABLE test_int (  -> col1 TINYINT,  -> col2 SMALLINT,  -> col3 MEDIUMINT,  -> col4 INT,  -> col5 BIGINT  -> ) ENGINE = INNODB DEFAULT CHARSET = utf8;Query OK, 0 rows affected (0.01 sec)
mysql> show create table test_int\G*************************** 1. row ***************************    Table: test_intCreate Table: CREATE TABLE `test_int` ( `col1` tinyint(4) DEFAULT NULL, `col2` smallint(6) DEFAULT NULL, `col3` mediumint(9) DEFAULT NULL, `col4` int(11) DEFAULT NULL, `col5` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)
mysql> insert into test_int values (1234,123456,12345678,12345678901,12345678901234567890);Query OK, 1 row affected, 5 warnings (0.00 sec)
mysql> insert into test_int values (-1234,-123456,-12345678,-12345678901,-12345678901234567890);Query OK, 1 row affected, 5 warnings (0.01 sec)
mysql> show warnings;+---------+------+-----------------------------------------------+| Level  | Code | Message                    |+---------+------+-----------------------------------------------+| Warning | 1264 | Out of range value for column 'col1' at row 1 || Warning | 1264 | Out of range value for column 'col2' at row 1 || Warning | 1264 | Out of range value for column 'col3' at row 1 || Warning | 1264 | Out of range value for column 'col4' at row 1 || Warning | 1264 | Out of range value for column 'col5' at row 1 |+---------+------+-----------------------------------------------+5 rows in set (0.01 sec)
mysql> select * from test_int;+------+--------+----------+-------------+----------------------+| col1 | col2  | col3   | col4    | col5         |+------+--------+----------+-------------+----------------------+| 127 | 32767 | 8388607 | 2147483647 | 9223372036854775807 || -128 | -32768 | -8388608 | -2147483648 | -9223372036854775808 |+------+--------+----------+-------------+----------------------+

从上述测试中我们可以看出:有符号时,各种整型类型最大的存储范围,当存储数字大小不在存储范围时,MySQL会产生告警,但数字可以插入,默认截取为可存储的最大值或最小值。

3.int(M)中M的含义与zerofill的使用

我们经常听到这句话:int(M)中的M代表最大显示宽度,"最大显示宽度"我们第一反应是该字段的值最大能允许存放的值的宽度,以为我们建了int(1),就不能存放数据10了, 其实不是这个意思。
整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,int都是占用4个字节,bigint都要占用8个字节。即int(5)和int(10)可存储的范围一样。
整型字段有个ZEROFILL属性(0填充),在数字长度不够的数据前面填充0,以达到设定的长度。加上ZEROFILL后M才表现出不同,当使用ZEROFILL时,默认会自动加unsigned(无符号)属性。比如 INT(3) ZEROFILL,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0,下面我们来测试下:


mysql> CREATE TABLE test_int_zerofill (  -> col1 INT(5) ZEROFILL,  -> col2 INT ZEROFILL,  -> col3 INT(5)  -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.01 sec)
mysql> show create table test_int_zerofill\G*************************** 1. row ***************************    Table: test_int_zerofillCreate Table: CREATE TABLE `test_int_zerofill` ( `col1` int(5) unsigned zerofill DEFAULT NULL, `col2` int(10) unsigned zerofill DEFAULT NULL, `col3` int(5) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)
mysql> insert into test_int_zerofill values (12,12,12);Query OK, 1 row affected (0.00 sec)
mysql> select * from test_int_zerofill;+-------+------------+------+| col1 | col2    | col3 |+-------+------------+------+| 00012 | 0000000012 |  12 |+-------+------------+------+1 row in set (0.00 sec)

那么有同学可能会问zerofill有什么应用场景呢,比较常用的应该是月份或日期前补0,这样显示的会规范些


CREATE TABLE `t_zerofill` (  `year` year(4) DEFAULT NULL,  `month` int(2) unsigned zerofill DEFAULT NULL,  `day` int(2) unsigned zerofill DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> insert into t_zerofill values (2019,6,5);Query OK, 1 row affected (0.01 sec)
mysql> insert into t_zerofill values (2019,6,18);Query OK, 1 row affected (0.00 sec)
mysql> insert into t_zerofill values (2019,10,1);Query OK, 1 row affected (0.00 sec)
mysql> insert into t_zerofill values (2019,11,11);Query OK, 1 row affected (0.01 sec)
mysql> select * from t_zerofill;+------+-------+------+| year | month | day |+------+-------+------+| 2019 |  06 |  05 || 2019 |  06 |  18 || 2019 |  10 |  01 || 2019 |  11 |  11 |+------+-------+------+4 rows in set (0.00 sec)

4.类型选取

经过上面的介绍,关于不同整型字段的选取变得容易很多。本着最小化存储的原则,当然是能选TINYINT不选SMALLINT,能选MEDIUMINT不选INT了,不过一切都要满足业务的前提下尽量选取占用字节更少的类型。对于确定只存储正整数的字段,可以加上unsigned属性,这样会使存储范围更大,比如当字段有AUTO_INCREMENT属性时,我们可以为int类型加上unsigned属性。

以上就是MySQL INT类型全解析的详细内容,更多关于MySQL INT类型的资料请关注自学编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL INT类型全解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL INT类型全解析

前言: 整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。 1.整型分类及存储范围整数类型字节有符号范围无符号
2022-05-22

MySQL数据类型全解析

2 数值类型数值类型是最基本的类型,可以分为整数类型与浮点数类型.2.1 整型类型字节数无符号范围有符号范围TINYINT1[0,255][-128,127]SMALLINT2[0,65535][-32768,32767]MEDIUMINT30-1677w+-
MySQL数据类型全解析
2014-07-01

MySQL Integer类型与INT(11)

1.介绍Integer类型,即整数类型,MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。 1.1 空间和范围每种整数类型所需的存储空间和范围如下:类型字节最小值(有符号)最大值(有符号)最小值(无符号)最大
MySQL Integer类型与INT(11)
2014-07-07

Python内建类型int源码分析

今天小编给大家分享一下Python内建类型int源码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题:对于C语言,下面
2023-06-30

详解MySQL数据类型int(M)中M的含义

介绍 MySQL 数据类型中的 integer types 有点奇怪。你可能会见到诸如:int(3)、int(4)、int(8) 之类的 int 数据类型。刚接触 MySQL 的时候,我还以为 int(3) 占用的存储空间比 int(4)
2022-06-04

MySQL中string转int类型怎么实现

在MySQL中,可以使用CAST或者CONVERT函数将字符串转换为整数类型。例如,可以使用CAST函数将字符串转换为整数:SELECT CAST('123' AS SIGNED);也可以使用CONVERT函数将字符
MySQL中string转int类型怎么实现
2024-03-06

阿里云 ECS 镜像类型全解析

阿里云ECS(ElasticComputeService)是一款高度可扩展的云计算产品,能够根据您的需求提供多种类型的计算实例。本文将详细介绍阿里云ECS的镜像类型,包括公有镜像、私有镜像、自定义镜像以及镜像市场等。一、公有镜像公有镜像是阿里云提供的免费基础镜像,包括操作系统镜像、中间件镜像等。公有镜像通常基于最
阿里云 ECS 镜像类型全解析
2023-10-31

C++ 基本数据类型中int、long等整数类型取值范围及原理分析

这篇文章主要介绍了C++ 基本数据类型中int、long等整数类型取值范围及原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

PHP中int类型转换为字节的方法详解

PHP中int类型转换为字节的方法详解在PHP中,我们经常需要将整数类型(int)转换为字节(Byte)类型,比如在处理网络数据传输、文件处理或者加密算法等场景中。本文将详细介绍如何将int类型转换为字节类型,以及提供具体的代码示例。1
PHP中int类型转换为字节的方法详解
2024-03-06

MySQL之char、varchar类型简析

我们都知道,MySQL中关于字符,有char和varchar两种常用的类型,可能在平时的使用过程中,大家不会去关心这两种类型的区别,只是会用就可以了,或者说看到过一些它们的区别,但是没有时间去测试,今天有时间了,我将这两种类型的具体情况实验
2023-08-18

帝国CMS碎片类型全解析:探究五大类别

帝国CMS碎片类型全解析:探究五大类别,需要具体代码示例在网站建设的过程中,碎片是一个非常重要且常用的概念。而在使用国内知名CMS系统——帝国CMS时,碎片的应用更是广泛且丰富。帝国CMS提供了多种类型的碎片,每种碎片都有其独特的作用和用
帝国CMS碎片类型全解析:探究五大类别
2024-03-13

编程热搜

目录