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. WCF 第二章 契约
  2. 80%的Android手机用户面临浏览器安全风险
  3. 数据恢复专业基础之python解释NTFS runlist的代码
  4. Leetcode题库 15.三数之和_0(双指针 C实现)
  5. PHP控制网页过期时间的代码!
  6. 2015最新Android学习线路图
  7. 长时间工作意味着什么
  8. 选择排序 ( 直接选择排序 堆排序 )
  9. 如何把大写金额变为小写数字_人民币金额(数字)大小写转换在线工具
  10. 【巨杉数据库SequoiaDB】限额开放!巨杉数据库中级工程师认证计划正式开启!
  11. 《Cisco VPP SFC》4、ODL SFC 安装
  12. Qt与Matlab混合编程中mwArray数组使用详解
  13. c语言编程怎么样,C语言怎么样,好学吗?
  14. 拼多多怎么发布机会产品|百择电商
  15. Android SELinux开发入门指南之如何增加Java Binder Service权限
  16. Word控件Spire.Doc 【页面设置】教程(9) 如何在 C# 中添加行号
  17. Linux系统对中断的处理
  18. 内网横传之哈希传递(Pass The Hash)
  19. SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb
  20. 《顿悟时刻:设计大师访谈录》—第2章Ian Ballantine 关于出版风格短暂的一堂课...

热门文章

  1. TinyXML的简单用法
  2. 中国互联网10年江湖录:最年轻的传奇
  3. 阿里云Windows Server 2022服务器在Win10上部署项目上线
  4. @Reference注解说明
  5. Tomcat shtml ssi
  6. #pragma是什么
  7. 微信小程序开发学习笔记2——安心食疗
  8. sql注入中的order by
  9. 对卷积神经网络中卷积层、激活层、池化层、全连接层的理解
  10. 文件结束标志EOF及fgetc fgets getc gets getchar函数