MySql中 tinyint,smallint,mediumint,int 与 bigint

一、容纳数据范围不同

1、tinyint(M) M默认为4,存储占1个字节

带符号的范围是-128到127。无符号的范围是0到255。

1、smallint(M) M默认为6,存储占2个字节

带符号的范围是-32768到32767;无符号的范围是0到65535。

2、mediumint(M) M默认为11,存储占3个字节

带符号的范围是-8388608到8388607;无符号的范围是0到16777215。

3、int(M) M默认为11,存储占4个字节

带符号的范围是-2147483648到2147483647;无符号的范围是0到4294967295。

4、bigint(M) M默认为20,存储占8个字节

带符号的范围是-9223372036854775808到9223372036854775807;无符号的范围是0到18446744073709551615。

二、存储大小不同

smallint 存储占2 个字节,int 存储占4字节,所以在考虑最大数据范围的前提下,为了节省磁盘空间,优先选用smallint类型。

MySQL数据类型DECIMAL用法

DECIMAL用法

DECIMAL(P,D)

  • P是表示有效数字数的精度。 P范围为1〜65。默认值是10
  • D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。默认值是0

比如DECIMAL(6,2):表示最多可以存储6位数字,小数位数为2位,小数部分会做四舍五入。

比如DECIMAL,等价于DECIMAL(10,0)。

DECIMAL存储

MySQL分别为整数和小数部分分配存储空间。 MySQL使用二进制格式存储DECIMAL值。它将9位数字包装成4个字节。

对于每个部分,需要4个字节来存储9位数的每个倍数。剩余数字所需的存储如下表所示:

剩余数字
0 0
1–2 1
3–4 2
5–6 3
7-9 4

例如,DECIMAL(19,9)对于小数部分具有9位数字,对于整数部分具有19位= 10位数字,小数部分需要4个字节。 整数部分对于前9位数字需要4个字节,1个剩余字节需要1个字节。DECIMAL(19,9)列总共需要9个字节。

mysql字段类型tinyint、smallint、mediumint、int、bigint详解

mysql建模的过程中,对于优化来讲一个非常重要的点就是字段类型的设置,好的字段类型的设置可以帮助更快的查询数据同时能节约硬盘空间,这对于优化数据库来讲是非常重要的。

mysql的字段类型大体来讲分为int、text、varchar、char、blog等几种,而各自的类型中又划分了不同的字符数的类型,这里先来讨论几种整形的情况。

先来看一下基本的概念:字节(byte),1个字节等于8个位(bit),一个bit存储0或者1,理解这个对于理解后面的占用字节导致的存储数值的有很重要的作用。

整型,常见细分为tinyint、smallint、mediumint、int、bigint这几种。

1)tinyint:存储所占一个字节,一个字节等于8bit,根据1bit可以存储0到1两种可能性,因此tinyint类型可以存储2的8次方,也就是256种可能性,从0开始计数,无符号也就是可以 存储0~255,如果是有符号,那就是-128~127。

2)smallint:存储所占两个字节,同上也就是可以存储2的16次方,也就是可以存储65536种可能性,无符号从0开始则是可以存储0~65535,有符号则是-32768~32767。

3)mediumint:存储所占三个字节,也就是2的24次方,可以存储16777216种可能性,无符号可以存储0~16777215,有符号可以存储-8388608~8388607。

4)int:存储所占四个字节,也就是2的32次方,可以存储4294967296种可能性,无符号可以存储0~4294967295,有符号则是-2147483648~2147483647。

5)bigint:存储所占8个字节,也就是2的64次方,可以存储2的64次种可能性,无符号可以存储0~((2³²×²)-1),有符号则是-(2³²×²)/2 ~ (2³²×²)/2-1。

我们经常会见到int(11)、tinyint(1)这种后面跟括号里面放数字的情况,很多人以为这是代表的该类型可存储的长度,但是我们上面已经分析了存储的情况,这种理解肯定是不对的,实际上括号里的数字表示的是最大显示宽度,这个数字和存储大小及其类型没有任何关系,也就是说tinyint(1)和tinyint(3)都是存储一个字节,并不会因为括号里的数字改变,这个数字仅仅是显示最大宽度。

例如tinyint(3)存储11则会显示011,因为最大宽度为3,达不到的情况下用0来补充,这样的话就很好理解了,下图也是做了一定的对比,分别存储的是1和123456、1234567890这几个数字。

在设置这个括号里的数值时我们也要小心,因为mysql手册上明确写了:当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度!

MySql中 tinyint ,smallint,mediumint,int,bigint 与 decimal相关推荐

  1. MYSQL中TINYINT SMALLINT MEDIUMINT INT BIGINT的区分

    在MYSQL当中整形数据的存储有四种,分别是TINYINT SMALLINT MEDIUMINT INT BIGINT,它们的区分如下: 类型 存储大小(字节) 最小有符号数 最小无符号数 最大有符号 ...

  2. 【mysql】关于mysql中int(M)类型的具体含义以及tinyint/smallint/mediumint/int/bigint的区别是什么?

    之前定义数据库类型一直不理解int(M)的具体含义,M决定的是什么?不同M的值的区别是什么?tinyint / smallint / mediumint / int / bigint这些类型又有什么不 ...

  3. MySQL数据类型详解:tinyint,smallint,mediumint,int,bigint的区别

    前言 每种编程语言都有自己所定义的数据类型,mysql也不例外,平时我们在创建表时,需要根据业务要求,结合存储.索引.字段临界值等条件来为字段定制不一样的类型.下面我们一起学习下mysql的几种常用的 ...

  4. MySQL 五种整型数据类型的范围与区别 tinyint smallint mediumint int bigint

    之前在论坛上看到一个有意思的问题,如果有一个字段的值超过bigint,会发生什么. 然后就看到有人喷,说0.1秒插入一个值,将bigint设置为无符号,插入到极限需要多久,根本不可能遇到如何如何 . ...

  5. mysql tinyint int mediumint 用哪个好_MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT...

    1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间. 当加有UNSIGNED后,数字可以从0增加到255大小. dba@loca ...

  6. mysql修改字段类型为smallint_MYSQL 字段类型之TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT

    1. tinyint: 只能存储-128到127大小的数字, 不在乎后面的定义,如tinyint(9). 需1字节存储空间. 当加有UNSIGNED后,数字可以从0增加到255大小. dba@loca ...

  7. TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT类型的显示宽度不显示

    最近给学生上课发现一个奇怪的现象 发现int的长度没有显示出来 从官方的解释来看得知 从8.0.17版本开始,TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT ...

  8. TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别

    http://www.path8.net/tn/archives/951 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述, ...

  9. mysql int mediumint,MySQL数据类型:TINYINT, SMALLINT, MEDIUMINT, INT, INTEGER等字段类型区别...

    好久没有接触后端数据库方面的知识了,一直没搞清楚像int(4) TINYINT(16)中的4和16表示的是什么含义,以及每种数据类型占用的字节数和表示的范围是多少,今天做个总结学习一下. MySQL支 ...

最新文章

  1. Android 自定义属性时TypedArray的使用
  2. 利用spring AOP注解实现日志管理
  3. smarty中js的调用方法
  4. 一键安装JDK和自动配置Java环境变量
  5. shell编程之正则表达式与文本工具
  6. .net敏捷开发及常用工具
  7. 通过yum安装redis
  8. 2021中国研究生数学建模竞赛
  9. ValueError: operands could not be broadcast together with shapes (100,) (71,)
  10. python身份证格式
  11. Anaconda安装教程
  12. 系统重装计算机硬件不兼容,升级Win10系统出现兼容性报告详细解答
  13. 怎么把线稿提取出来_如何提取线稿为你所用?不会的来!
  14. BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) -- 转贴自 wolfenstein (NeverSayNever)
  15. Nelder–Mead算法详解
  16. 超级计算机用什么芯片,神威是第一台完全使用中文芯片的超级计算机吗?
  17. python+selenium+unittest自动化测试框架
  18. 绘制cadence16.6原理图库
  19. jieba分词的源码解析,并从零实现自己的分词器
  20. 虚拟机环境下实现内网外网互相ping的方法

热门文章

  1. java ndc_【Unity Shader】从NDC(归一化的设备坐标)坐标转换到世界坐标的数学原理...
  2. C语言中,printf、sprintf、fprintf之间的区别及用法举例
  3. FEC系列(一)webrtc中的媒体保护策略
  4. 青岛科技大学计算机研究生,青岛科技大学2019年硕士研究生拟录取名单公示
  5. PostgreSQL中的索引—5(GiST)下
  6. 如何使用 Python 验证电子邮件地址
  7. GetDlgItem(IDC_EDIT1)-EnableWindow(false);
  8. 虚假账号不断进化,AI能做的还是有限
  9. 高等数学笔记-乐经良老师-第四章-微分中值定理和导数的应用-第一节-微分中值定理
  10. 微信小程序获取当前位置的省、市、区等信息