Mysql 中 int(3) 和 int(11) 的区别
【1】int(3) 和 int(11)的区别(思维惯性认知错误)
这里的3或11代表的是存储在数据库中的具体的长度,总以为int(3)只能存储3个长度的数字,int(11)只会存储11个长度的数字。
【2】Mysql基础知识
学习Mysql基本数据类型时,我们已知:
从声明字段是int类型的那一刻起,int类型的字段就是占四个字节,一个字节8位,也就是4*8=32位。
因此,可以表示的数字个数是2的32次方(2^32 = 4294 9672 96个数字)
而4294 9672 96个数字也就是[0, 4294967295],当然,如果区分正负号的话所存的数值会比较小。
另外,zerofill属性的作用:
(1)插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应长度的0
(2)zerofill默认为int(10)
(3)当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍。
例如,有符号为[-2147483648,2147483647],无符号为[0, 4294967295]。
【3】SQL学习实例
(1)SQL语句
-- 本地Mysql版本V8.0.12
-- --------------------------BEGIN ZEROFILL-----------------
-- [1]存在先删除
DROP TABLE students;
-- [2]创建表
CREATE TABLE `students` (
`sId` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`sName` VARCHAR(100) NOT NULL,
`sAge` INT(2) ZEROFILL NOT NULL,
`sAddr` VARCHAR(200) DEFAULT NULL,
`sGrade` INT(2) DEFAULT NULL,
`sStuId` INT(8) DEFAULT NULL,
`sSex` INT(1) UNSIGNED DEFAULT NULL,
`sReverse_00` INT(10) ZEROFILL DEFAULT NULL,
`sReverse_01` INT(11) UNSIGNED DEFAULT NULL,
`sReverse_02` INT(11) ZEROFILL UNSIGNED DEFAULT NULL,
PRIMARY KEY (`sId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
-- [3]插入源数据
INSERT INTO
students(sName, sAge, sAddr, sGrade, sStuId, sSex, sReverse_00, sReverse_01, sReverse_02)
VALUES
('wangchao', 8, 'heyang', 3, 1803111, 0, 4294967296, 4294967296, 4294967296),
('suntao', 9, 'weinan', 6, 1806110, 1, 4294967296, 4294967296, 4294967296),
('liuyan', 16, 'hancheng', 8, 20190811, 0, 4294967296, 4294967296, 4294967296),
('xuhui', 22, 'hancheng', 12, 201912107, 1, 42949672969, 4294967296, 4294967296);
-- [4]查询数据信息
SELECT sId, sName, sAge, LENGTH(sAge) AS len_Age, sAddr,
sGrade, LENGTH(sGrade) AS len_Grade,
sStuId, LENGTH(sStuId) AS len_StuId,
sSex,
sReverse_00, LENGTH(sReverse_00) AS len_Reverse00,
sReverse_01, LENGTH(sReverse_01) AS len_Reverse01,
sReverse_02, LENGTH(sReverse_02) AS len_Reverse02
FROM students;
-- [5]查询数据长度
SELECT sId, sName, sAge, LENGTH(sAge) AS len_Age FROM students;
SELECT sId, sName, sGrade, LENGTH(sGrade) AS len_Grade FROM students;
SELECT sId, sName, sStuId, LENGTH(sStuId) AS len_StuId FROM students;
SELECT sId, sName, sReverse_02, LENGTH(sReverse_02) AS len_Reverse02 FROM students;
-- --------------------------END ZEROFILL-----------------
(2)查询结果数据集

(3)结果分析
其实,当我们在选择使用int类型时,不论是选择int(3)还是int(11),它在数据库里面存储的都是4个字节的长度。
只不过在使用int(3)且加zerofill属性时,如果你输入的数值是17,系统会默认为你存储值为017,什么意思呢?
即就是说,这个3代表的仅是一个默认的长度,当不足3位时,系统会帮用零补全,当超过3位时,就没有任何的影响与副作用。
两者之间除了在存储的时候稍微有点区别外,当我们在使用数据时是没有任何差异的。
实际中,要看出两者的不同效果,需要在创建表时字段类型后加zerofill这个属性,表示用0填充,否则是看不出效果的。
因为通常我们在创建数据库表字段时都不会加入这个属性,所以可以说两者之间是没有区别的。
综上所述:只可能对数据存储有差异。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
Mysql 中 int(3) 和 int(11) 的区别的更多相关文章
- mysql中 drop、truncate和delete的区别
mysql中drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNC ...
- mysql中的where和having子句的区别
mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...
- MySQL中char、varchar和text的区别
三者空间占用方面: char:存储定长数据很方便,CHAR字段上的索引效率极高,可以有默认值,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间(自动用空格填 ...
- mysql中 REPLACE INTO 和 INSERT INTO 的区别
mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...
- MySQL中TEXT与BLOB字段类型的区别
这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下 在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...
- MySql中的tinying,smallint,int,bigint的类型介绍——转载
tinyint 从 0 到 255 的整型数据.存储大小为 1 字节. smallint 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据.存储大小为 2 个字节 ...
- MySQL 中隔离级别 RC 与 RR 的区别
1. 数据库事务ACID特性 数据库事务的4个特性: 原子性(Atomic): 事务中的多个操作,不可分割,要么都成功,要么都失败: All or Nothing. 一致性(Consistency): ...
- mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别
在mysql中存在着各种utf8编码格式,如下表: 1)utf8_bin 2)utf8_general_ci 3)utf8_general_cs utf8_bin将字符串中的每一个字符用二进制数据存储 ...
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- 浅谈mysql中varchar(m)与char(n)的区别与联系
mysql建表长度的限制 在mysql建表时,出现以下报错信息: 错误一:行大小过大,所使用的表这种类型的最大的行大小,不算BLOB类型,是65535.(这是我翻译的) 原因是MySQL在建表的 ...
随机推荐
- SDU暑假排位第一场 (Gym - 100889)
啊今天有点挂机啊 D题和队友暴力后发现一组数据跑得飞快 然后遇上1e5组数据就没了..... 然后我疯狂优化暴力 然后去世了 最后半小时F也没写出来 主要还是最后有点慌并且没有考虑清楚 导致情况越写越 ...
- win10系统2分钟睡眠
https://blog.csdn.net/widenstage/article/details/78982722 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe ...
- Java动态调用脚本语言Groovy
Java动态调用脚本语言Groovy 2019-05-15 目录 0. pom.xml添加依赖1. 使用GroovyShell计算表达式2. 使用GroovyScriptEngine脚本引擎加载Gro ...
- shell expect的简单实用
一.在shell脚本中嵌入expect来实现密码输入 expect是一个自动交互功能的工具.expect是开了一个子进程,通过spawn来执行shell脚本,监测到脚本的返回结果,通过expect判断 ...
- GEO Gene Expression Omnibus
GEO Gene Expression Omnibus 基因表达数据库 网址:https://www.ncbi.nlm.nih.gov/geo/ GEO的数据存储方式 GEO数据库具体存放四类数据: ...
- 迁移学习、fine-tune和局部参数恢复
参考:迁移学习——Fine-tune 一.迁移学习 就是把已训练好的模型参数迁移到新的模型来帮助新模型训练. 模型的训练与预测: 深度学习的模型可以划分为 训练 和 预测 两个阶段. 训练 分为两种策 ...
- 颜色空间模型(HSV\LAB\RGB\CMYK)
通过Photoshop的拾色器,我们知道表征颜色的模型的不止一种,本文将系统并且详细讨论这四种模型(HSV.LAB.RGB和CMYK)之间的联系以及应用.本文部分章节整合了多位优秀博主的博客(链接见本 ...
- js去除html标签样式
params = params.replace(/<\/?.+?>/g,"").replace(/ /g,"");
- pdf 中画虚线
<?php require('fpdf.php'); class PDF_Dash extends FPDF { function SetDash($black=null, $white=nul ...
- 使用ssh-keygen生成私钥和公钥
1.使用ssh-keygen生成私钥和公钥 命令如下: ssh-keygen -t rsassh-keygen -t rsa -C "用户名自取"可以是邮箱 例子: fdipzon ...