​ MySQL支持SQL标准整数类型integer(或INT)和SMALLINT。作为标准的扩展,MySQL还支持整数类型TINYINT、MEDIUMINT和BIGINT。

类型 所占字节 有符号最小值 无符号最小值 有符号最大值 无符号最大值
TINYINT 1 -128 0 127 255
SMALLINT 2 -32768 0 32767 65535
MEDIUMINT 3 -8388608 0 8388607 16777215
INT 4 -2147483648 0 2147483647 4294967295
BIGINT 8 -263 0 263-1 264-1

下面是创建表的语句:

    CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`age` int(2) COMMENT '年龄',
`stature` int(3) ZEROFILL COMMENT '身高',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

​ 其中列 id 、 age、stature都是整型 。其中int后面括号中的数字指的是列宽,用M表示。对于整数类型,M表示最大显示宽度。最大显示宽度为255。显示宽度与类型可以存储的值范围无关。

我们来添加几条数据测试:

    INSERT INTO person( age, stature) VALUES(102,168);
INSERT INTO person( age, stature) VALUES(5,80);
INSERT INTO person( age, stature) VALUES(99999,99999);

查询结果:

id age stature
1 102 168
2 5 080
3 99999 99999
  • age我们设置的宽度是2,但是没有增加ZEROFILL属性,这个时候,不论是INT(2)还是INT(11),它在数据库里面存储的都是4个字节的长度,没有任何区别。
  • stature我们设置的快读是3,并且设置了ZEROFILL属性,那么我们插入的长度小于3,前面就补0,如080,如果长度大于3,如99999,则也可以正常插入。

注意:我使用 Navicat 查询的时候,第三条记录显示不正确(少了几个9),但是使用命令行查询则正确。

如果为数值列指定了ZEROFILL, MySQL会自动将UNSIGNED属性添加到该列。

    INSERT INTO person( age, stature) VALUES(25,-80);

结果如下,说明stature已经是非负整数了:

    INSERT INTO person( age, stature) VALUES(25,-80)
> 1264 - Out of range value for column 'stature' at row 1
> 时间: 0.004s

​ 从MySQL 8.0.17开始,对于数字数据类型,不建议使用ZEROFILL属性,并且在将来的MySQL版本中将不再支持该属性。 考虑使用替代方法来产生此属性的效果。 例如,应用程序可以使用 LPAD() 函数将数字零填充到所需宽度,或者将格式化的数字存储在CHAR列中。

总结:

  1. 不加 ZEROFILL 属性,int(1) 和 int(11)没有任何区别,底层数据都是4个字节,注意字段显示宽度最大为255.
  2. 加上 ZEROFILL 属性,列默认为无符号,并且值宽度小于显示宽度会在左边补0,大于显示宽度则正常显示。
  3. 不建议使用 ZEROFILL 属性,使用LPAD函数代替此功能。

MySQL数据类型-整型的更多相关文章

  1. mysql数据类型——整型INT(m)

    1.整形分为四种 tinyint smallint mediumint int bigint 注意: 右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如t ...

  2. GOLANG 基本数据类型 整型

    基本数据类型-整型 种类     有符号(负号)      int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位 ...

  3. Golang的基础数据类型-整型

    Golang的基础数据类型-整型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.整型概述 Go语言的整数类型一共有10个. int: 默认是有符号(signed)整形,占用空间 ...

  4. GO语言学习——基本数据类型——整型、浮点型、复数、布尔值、fmt占位符

    基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8.int16.int32.int64 对应的无符号整型:uint8.uint16.uint32.uint64 其中,uint8就是我们熟 ...

  5. mysql之整型数据int

    mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 - ...

  6. python基础知识2——基本的数据类型——整型,长整型,浮点型,字符串

    磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 对于Python ...

  7. 第一节 Python基础之数据类型(整型,布尔值,字符串)

    数据类型是每一种语言的基础,就比如说一支笔,它的墨有可能是红色,有可能是黑色,也有可能是黄色等等,这不同的颜色就会被人用在不同的场景.Python中的数据类型也是一样,比如说我们要描述一个人的年龄:小 ...

  8. python02 运算符,基本数据类型,整型,字符串

    1.python开发IDE pycharm,python编写工具,, #专业版 #不需要汉化 注册码问题解决 https://www.cnblogs.com/evlon/p/4934705.html整 ...

  9. [日常] Go语言圣经--作用域,基础数据类型,整型

    go语言圣经-作用域 1.一个声明语句将程序中的实体和一个名字关联,比如一个函数或一个变量 2.一个变量的生命周期是指程序运行时变量存在的有效时间段;声明语句的作用域对应的是一个源代码的文本区域,它是 ...

随机推荐

  1. Spring、Spring MVC、Struts2、、优缺点整理(转)

    Spring 及其优点 大部分项目都少不了spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量 ...

  2. mongoDB关系型数据库的对比

    一.基本操作 1.mongoDB和关系型数据库对比 对比项 mongoDB mysql oracle 表 集合list 二维表 表的一行数据 文档document 一条记录 表字段 键key 字段fi ...

  3. Docker实战部署应用——Redis

    Redis 部署 拉取Redis镜像 docker pull redis 创建Redis容器 docker run -id --name=sun_redis -p 6379:6379 redis 客户 ...

  4. pgtclsh -- PostgreSQL TCLshell 客户端

    SYNOPSIS pgtclsh [filename [argument...]] DESCRIPTION 描述 pgtclsh 是一个 Tcl shell 接口,用 PostgreSQL 数据库访问 ...

  5. 记一次 gunicorn 启动 flask 出问题的经历

    出错现象: gunicorn+nginx+flask 部署项目, 部署过程没问题,项目也正常启动了,但是一旦访问接口,就会报错: Traceback (most recent call last): ...

  6. Redux中间件之redux-thunk使用详解

    Redux的核心概念其实很简单:将需要修改的state都存入到store里,发起一个action用来描述发生了什么,用reducers描述action如何改变state tree .创建store的时 ...

  7. 【LeetCode】二叉查找树 binary search tree(共14题)

    链接:https://leetcode.com/tag/binary-search-tree/ [220]Contains Duplicate III (2019年4月20日) (好题) Given ...

  8. substring c# js java

    c# String.SubString(int index,int length) String.SubString(int start) 等效于 javascript stringObject.su ...

  9. ps:图像格式的选择

    从上面点阵与矢量两者的对比中,似乎矢量格式有优势,那为什么不都使用矢量格式呢? 这是因为矢量图像是基于线段的.因此它不适合记录色彩较为复杂的图像.如下图, 如果使用点阵方式来记录,只要按照顺序扫描并记 ...

  10. Java使用多线程发送消息

    在后台管理用户信息的时候,经常会用到批量发送提醒消息,首先想到的有: (1).循环发送列表,逐条发送.优点是:简单,如果发送列表很少,而且没有什么耗时的操作,是比较好的一种选择,缺点是:针对大批量的发 ...