广告
返回顶部
首页 > 资讯 > 数据库 >INT类型知多少
  • 553
分享到

INT类型知多少

2024-04-02 19:04:59 553人浏览 独家记忆
摘要

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

前言:
整型是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

表格一共有四列分别表示:字段类型, 占用字节数, 有符号范围, 无符号范围。<br />我们拿int类型为例:<br />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_int
Create 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=utf8
1 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了, 其实不是这个意思。<br />整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,int都是占用4个字节,bigint都要占用8个字节。即int(5)和int(10)可存储的范围一样。<br />整型字段有个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_zerofill
Create 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=utf8
1 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属性。

INT类型知多少

您可能感兴趣的文档:

--结束END--

本文标题: INT类型知多少

本文链接: https://www.lsjlt.com/news/51894.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • INT类型知多少
    前言:整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。 1.整型分类及存储...
    99+
    2022-10-18
  • PHP中的int类型占用多少字节?
    在编写PHP程序时,经常需要使用int类型来存储整数数据。但是,不同的编程语言在存储数据时,占用的字节数可能会有所不同。因此,有些PHP程序员可能会问:PHP中的int类型到底占用多少个字节?答案是:PHP中的int类型占用4个字节,即32...
    99+
    2023-05-14
    int php
  • mysql int类型存储时需要多少字节
    本篇内容主要讲解“mysql int类型存储时需要多少字节”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql int类型存储时需要多少字节”吧! ...
    99+
    2022-10-19
  • Java:泛型知识知多少
    目录定义意义(即为什么要使用泛型)1. 背景2. 问题3. 解决方案作用原理额外说明: List能否转为List?总结定义 可理解为 适配广泛的类型,即参数化类型,可以把类型像方法的...
    99+
    2022-11-12
  • 这五种ios签名类型你知道多少?
    这五种ios签名类型你知道多少?随着现在苹果企业签名越来越普及了,人们也对企业签名这一名词了解的很多了,目前市场上存在的签名有这几种,今天就让小编带你们来看一下吧:共享版企业签名:之所以叫共享版签名,是因为它所用到的证书大多都是市场上流通的...
    99+
    2023-06-04
  • java int长度多少
    java int长度多少int的取值范围为: -2^31——2^31-1,即-2147483648——2147483647。对于正数来说,它的补码就是它本身。对于负数来说,它的补码是它对应的正数的二进数所有位取反之后加一。由负数的补码求原码...
    99+
    2017-07-04
    java基础 java int 长度
  • int占多少字节
    int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,...
    99+
    2023-08-14
  • golang转化int类型
    Golang是一种开源的编程语言,作为一门静态类型的语言,其中有些数据类型的转换需要注意。其中一个常见的转化就是将int类型转化为其他类型。本文将介绍如何在Golang中进行int类型的转化。在Golang中,int类型的位数和具体实现会根...
    99+
    2023-05-14
  • java int的长度是多少
    int:int 数据类型是32位、有符号的以二进制补码表示的整数; (推荐学习:java课程)最小值是 -2,147,483,648(-2^31);最大值是 2,147,483,647(2^31 - 1);一般地整型变量默...
    99+
    2016-10-23
    java教程 java
  • Python 容器:你知道多少种不同的容器类型?
    在 Python 中,容器是用来存储多个对象的数据类型,比如列表、元组、字典等。Python 中的容器类型非常多,不同的容器类型适用于不同的场景,掌握这些容器类型对于 Python 程序员来说非常重要。在本文中,我们将介绍 Python ...
    99+
    2023-07-03
    容器 http shell
  • MySQL Integer类型与INT(11)
    1.介绍 Integer类型,即整数类型,MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。   1.1 空间和范围 每种整数类型所需的存储空间和范围如下: 类型 字节 ...
    99+
    2014-07-07
    MySQL Integer类型与INT(11)
  • MySQL INT类型全解析
    前言: 整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉int类型相关知识,也会介绍其他整型字段的使用。 1.整型分类及存储范围 ...
    99+
    2022-05-22
    MySQL int MySQL int类型
  • c++怎么将string类型转换成int类型
    要将string类型转换为int类型,你可以使用C++的内置函数stoi()或者stringstream类来实现。 使用stoi(...
    99+
    2023-10-27
    c++
  • java 实现将Object类型转换为int类型
    如何将Object类型转换为int类型 Object object = null; try { Integer.parseInt(object.toString()); ...
    99+
    2022-11-12
  • css3有多少种定位类型
    小编给大家分享一下css3有多少种定位类型,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! css3定...
    99+
    2022-10-19
  • javascript有多少种数据类型
    这篇文章将为大家详细讲解有关javascript有多少种数据类型,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。javascript有9种数据类型,分别为:字符串(String)、数字(Number)、布尔...
    99+
    2023-06-14
  • java有多少种数据类型
    本篇内容介绍了“java有多少种数据类型”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本数据类型:byte、short、int、long、...
    99+
    2023-06-19
  • mysql中int(5)的长度是多少
    这篇文章主要介绍“mysql中int(5)的长度是多少”,在日常操作中,相信很多人在mysql中int(5)的长度是多少问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中int(5)的长度是多少”的疑...
    99+
    2023-07-06
  • python各种类型转换-int,str
    int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(r...
    99+
    2023-01-31
    类型 python str
  • 基本数据类型(int, bool, st
    一.python基本数据类型  1. int ==> 整数. 主要用来进行数学运算  2. str ==> 字符串, 可以保存少量数据并进行相应的操作  3. bool==>判断真假, True, False  4. l...
    99+
    2023-01-30
    数据类型 int st
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作