Mysql之int(n)长度浅析

您所在的位置:网站首页 集合的长度是什么意思 Mysql之int(n)长度浅析

Mysql之int(n)长度浅析

2024-01-21 12:26| 来源: 网络整理| 查看: 265

mysql数据库作为当前常用的关系型数据库,肯定会遇到设计表的需求,下面对设计表时int类型的设置进行分析。 如对用户表user添加一个user_id字段,数据类型为int,设置为:int(1); mysql中int占4个字节,每个字节为8位(二进制中的8位),那么无符号int的最大值为2^32-1=4294967295,达到40亿,难道用了int(1),就不能存储这个最大值吗? 测试

CREATE TABLE `user` ( `id` int(1) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; INSERT INTO `user` (`id`) VALUES (4294967295);

在这里插入图片描述 可以看到id字段为无符号的int(1),插入最大值执行成功,那么int(1)里面的数字没有影响int本身支持的大小,可以存储最大值。

那么里面的1代表什么?通常设置的int(11)代表什么? 一般int里面的数字配合zerofill一起使用才有效。 测试

CREATE TABLE `user` ( `id` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; INSERT INTO `user` (`id`) VALUES (1),(10),(100),(1000),(10000);

在这里插入图片描述 可以看到id字段为int(4),且后面加了个 zerofill,分别插入了1,10,100,1000,10000,通过结果可以发现int(4)+zerofill实现了不足4位补0的现象,单独int(4)是没有用的,即里面的数字是没有用的。 所以,int(1)里面的1不能表示字段的长度,int(n)加上zerofill才有效果,实现零填充。 通常设置的int(11)加上zerofill后表示长度为11位,若不足11位则用0填充。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3