首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    聊聊Mysql中的int(1)

    昨天有个读者问了我这样一个问题在mysql中建表的时候,我设置一个字段为int类型,长度为1,但是我发现这个字段却可以存储任意长度的数字,这是什么情况?...int 类型占 4 个字节,一个字节是 8 位,也就是说 int 类型在计算机底层是由 32 个 0 跟 1 表示,转化为十进制就是 2 的 32 次方,那么存储范围就是 0~2^32 ,如果带符号位的话就是...Zerofill:零填充,意思就是达不到指定长度后,前面用 0 来填充。 现在再来看看这个int(1)中的1究竟有什么奥秘。这个1跟这个字段能存的数据范围没关系,它也不是限制这个字段的数据长度的。...mysql对于整型的数据类型,不仅给我们提供了int,还提供了tinyint,smallint,mediumint和bigint。...2 -32768 32767 0 65535 MEDIUMINT 3 -8388608 8388607 0 16777215 INT 4 -2147483648 2147483647 0 4294967295

    2.7K20

    mysql中int长度的意义

    提问: mysql的字段,unsigned int(3), 和unsinged int(6), 能存储的数值范围是否相同。如果不同,分别是多大?...回答: 不同,int(3)最多显示3位无符号整体,int(6)最多显示6位无符号数。 如果你的答案和上面的一致,恭喜你和我犯了一样的错误。...发现,无论是int(3), int(6), 都可以显示6位以上的整数。但是,当数字不足3位或6位时,前面会用0补齐。...查下手册,解释是这样的: MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。...结论: 无论是unsigned int(3)或 unsiend int(6),存储的都是4字节无符号整数, 也就是0~2^32。

    5.5K10

    MySql中int(10)与int(11)有什么区别吗?

    0 1 引言 依稀还记得有次面试,有面试官问我int(10)与int(11)有什么区别,当时觉得就是长度的区别吧!面试官最后也没有给反馈,我也就以为自己答对了。...int(10)也可以代表 2147483647 这个值int(11)也可以代表。 要查看出不同效果记得在创建类型的时候加 zerofill这个值,表示用 0 填充,否则看不出效果的。...0 2 知识点 int(M) 中的M指示最大显示宽度,最大有效显示宽度是 255,且显示宽度与存储大小或类型包含的值的范围无关。...MySQL 类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。...0 3 总结 所以,int(2) 与int(11)后的括号中的字符表示显示宽度,整数列的显示宽度与 MySQL 需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int类型的字段能存储的数据上限依旧是

    6.4K30

    【MySQL 】MySQL 中的 int(11) 到底代表什么意思?

    一、前言   在工作中经常要与 mysql 打交道,但是对 mysql 的各个字段类型一直都是一知半解,因此写本文总结记录一番。 二、简介 ?   ...对于 int 类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的 int(11) 代表什么意思,很长时间以来我都以为这代表着限制 int 的长度为 11 位,直到有天看到篇文章才明白,11...首先创建一张表: CREATE TABLE int_demo (     id INT(11) NOT NULL AUTO_INCREMENT,     a INT(11) NOT NULL,     ...b INT(11) UNSIGNED ZEROFILL NOT NULL,     c INT(5) DEFAULT NULL,     d INT(5) UNSIGNED ZEROFILL NOT NULL...注释:如果用 navicate 软件查询出来并不会显示左边的 0,但把数据导出时可看到真实的数据,猜测是软件对数据格式进行了处理。

    4.8K20

    详解 mysql int 类型的长度值问题

    秉着好奇心, 打开了 google ~ 引入大神的解答. mysql 在建表的时候 int 类型后的长度代表什么? 是该列允许存储值的最大宽度吗?...所以我在网上查阅了一些资料, 也仔细的看了 mysql 手册关于 int data type 的说法. 以下是每个整数类型的存储和范围 (来自 mysql 手册) ?...mysql 我们看到现在我的 number 字段, 长度 (M)=5, 属性 =UNSIGNED ZEROFILL(无符号, 用 0 来填充位数), 设置这个属性后我往表时插入数据, 系统会自动把 number...字段 M 不够 5 位的在左侧用 0 来填充; 效果如下 ?...mysql 手册上还有这么一句话 "当 mysql 为某些复杂的联结 (join) 生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度".

    5K20

    MySQL INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT(整数类型)

    MySQL提供了多种数值型数据类型,不同的数据类型提供不同的取值范围,可以存储的值范围越大,所需的存储空间也会越大。...MySQL 主要提供的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,其属性字段可以添加 AUTO_INCREMENT 自增约束条件。...下表中列出了 MySQL 中的数值类型。...类型名称说明存储需求TINYINT很小的整数1个字节SMALLINT小的整数2个宇节MEDIUMINT中等大小的整数3个字节INT (INTEGHR)普通大小的整数4个字节BIGINT大整数8个字节从上表中可以看到...类型名称说明存储需求TINYINT-128〜1270 〜255SMALLINT-32768〜327670〜65535MEDIUMINT-8388608〜83886070〜16777215INT (INTEGER

    66110

    当MySQL的int不够用了

    关于int的长度 很多时候看到int(8)这样的定义,其实这是工具导出的不专业。 int是范围,不是长度。 在开发有了共识(知道这个长度不算数,要看范围)以后,上来就是所有的类型都是bigint。...int的范围 int的取值范围是 TINYINT:占用1个字节(8位),取值范围是-128到127(有符号),或者0到255(无符号)。...INT 或 INTEGER:占用4个字节(32位),取值范围是-2,147,483,648到2,147,483,647(有符号),或者0到4,294,967,295(无符号)。...所以都是bigint不太合适 我个人建议 MySQL的表,如果要自增ID当主键的,那么就是用int就行。可以放21亿条数据。现如今99.99%的系统中的数据表没这么多数据。...实操测试 在MySQL中当列有数据库的时候改类型是可以的。(不是所有都这样,Oracle就不允许) 在b列有数据的时候改类型。成功。 在这个基础上给id列写入最大值以及模拟越界。

    18710

    mysql 中 int(5) 到底有是多长?

    在设计 mysql 表字段时,int(5) 表示是该字段长度为 5 吗?如果你觉得是,那请你继续往下看,相信你会有新的收获的。...int(5) 其实是和另一个属性 zerofill 配合使用的,表示如果该字段值的宽度小于 5 时,会自动在前面补 0 ,如果宽度大于等于 5 ,那就不需要补 0 。...#int(5) length 字段添加了 zerofill 属性 mysql> select * from test; +----+--------+ | id | length | +----+---...#int(5) length 字段没有 zerofill 属性 mysql> select * from test; +----+--------+ | id | length | +----+----...微信图片_20190118095222.jpg 注意如果要存储带符号的整形数,是不支持 zerofill 属性的,会自动转换为 0,在一些涉及递减的业务中需要注意考虑一下。

    2.7K30

    你对MySQL的int(11)真的了解吗?

    你对MySQL的int(11)真的了解吗? 最近在网上看到一篇关于int(3)和int(11)区别的帖子,我第一反应这不就是它们之间主要涉及存储整型数据时所需的位数,即3位和11位的差异。...mysql-int.jpg MYSQL int 数据存储范围 首先,需要明确的是,int(3)和int(11)都是表示整数类型,而不是定义整数的存储长度。...在MySQL中,INT类型占据4个字节(32位),可以存储范围是-2^31到2^31-1(约-2.1亿到2.1亿),这个范围是固定的,不受括号中数字的影响。...我们可以在mysql(5.7)中创建数据查看下具体的效果: 创建表: CREATE TABLE `int_test1` ( `int_3` int(3) , `int_11` int(11) ,...在mysql8.0 中,只有设置了ZEROFILL,才能看到int(),否则都是int 实际应用 我们在实际生产环境使用查询的时候通常要把数据库的int数据转化为java对象的Integer,所以ZEROFILL

    93210

    不要再被MYSQL的INT(M)给迷惑了

    MYSQL里有些比较隐晦的知识点,经常被稀里糊涂的用错而不自知。以前评审过程发生的次数较多,索性随手写一些出来。前人栽个树,后人一定要乘凉啊!...表设计使用整型时,经常发现定义int括号里的M是五花八门的。误区是,不少人把M当成了数据库中存储的最大长度,而实际上这个代表的是显示宽度。只要是int类型,在数据库里的存储就一定是4个字节。...当一个数值列类型被定义成zerofill时,查询此列MYSQL会自动在数值左侧填充0直到M长度,若数值长度已超过M, 则无需填充0; 2....Step 4 > 简单解读一下: - 不管M定义多长,INT可存储的数值范围都由 4个字节 和 有无符号 来决定; - 超过最大值不报错,直接存储最大值; - 基于M显示宽度值来左填充0,只有声明zerofill...的列才可以产生效果; 重申 > 若觉得使用int有点浪费,比如状态列,那可以使用tinyint, 千万不要想当然的以为int(1)存的是就一位数字,还沾沾自喜的觉得节省了存储空间。

    1.9K31
    领券