先看一个mysql表结构

Sql代码

  1. CREATE   TABLE  `test` (
  2. `TYPEID` int (2)
  3. ) ENGINE=MyISAM CHARSET=latin1;

Sql代码  

  1. CREATE TABLE `test` (
  2. `TYPEID` int(2)
  3. ) ENGINE=MyISAM CHARSET=latin1;

对于test表字段中的typeId 后面的 int(2)中的2代表的到底是什么含义。

对于大多数的人来说我们马上想到的是varchar(2)后面的2代表为两个字节,也就不难把int后的2误认为2位即typeId的最大存入的数为99【俺以前也一直这么认为的】 。

这样的想法一直延续的有个项目,对于数值类型只能在100内的字段忘记作校验就给插入数据库,测试的同事了把一个千位数插入,竟然插入并且数据库中数据也 正确。汗,当时我的第一反应是测试服务器的表创建错误,检查一遍没有啊。回到本地也测试了下发现也存在这个问题。逼的没办法了就上网上找资料,终于找到了 以下说明。

    对于mysqlint来说它的长度是不变的及为4个字节、对于插入数据数据大小也是不变的。

     带符号的数值大小范围为:-2147483648 214748347

     无符号的:04294967295

     int(x)x并不能改变int类型字段存入数据值的大小【即不能限制数值的范围】

举个示例说

int(2)能存入214748347

int(1)也能存入214748347

示例使用test表为例

C#代码

  1. insert into test value( <strong>214748347</strong>
  2. );

C#代码  

  1. insert into test value( <strong>214748347</strong>
  2. );

发现能插入,整个过程如下:

int(2)能插入214748347。

  intx)的x到底是什么,x为期望显示数据的列宽。

 期望列宽干什么用,这个是和mysql的另外的关键字zerofill一起使用

    zerofill 含义代表为未到达宽度x的前填充0【或称为0补位】,超出x代表宽度的数值按原样显示。

  备注:zerofill自动将int标示为无符号的类型

无该关键代表不填充,按原值显示。

示例如下

过程如下

Sql代码

  1. CREATE   TABLE  `tZfill` (
  2. `TYPEID` int (4) zerofill
  3. ) ENGINE=MyISAM CHARSET=latin1;
  4. insert   into  tZfill value( 12 );
  5. insert   into  tZfill value(  558585 );
  6. select  *  from  tZfill;

Sql代码  

  1. CREATE TABLE `tZfill` (
  2. `TYPEID` int(4) zerofill
  3. ) ENGINE=MyISAM CHARSET=latin1;
  4. insert into tZfill value( 12 );
  5. insert into tZfill value(  558585 );
  6. select * from tZfill;

整个执行过程

mysql中的TINYINT、SMALLINT等数据类型都是这样表示。

1):这样可以看出mysql对于数值类型来说不管是多大的数它的存储大小没有改变【该占几个字节还是占几个字节,不因期望存储宽度即x而改变】,所以我们开发时候的选择合适的数值类型能用小的存储位数的就用小的。

    2):对于数字类型该校验的还是要校验,否则容易出现这样的问题.

msyql int(x) 中的x的更多相关文章

  1. int类中的方法

    我们知道在python中,一切对象都是类,对象的方法都封装在类中,现在来探讨一下int类中的方法: 我们可以通过help(int)和dir(int)来查看int类中都封装了那些方法:     1.bi ...

  2. Algorithm3: 获得一个int数中二进制位为1 的个数

    获得一个int数中二进制位为1 的个数   int NumberOfOne(int n){                  int count = 0;                  unsig ...

  3. 关于mysql中int(1)中int后面的数字

    mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢.  当时我虽然知道int(1),这个长度1并不代表 ...

  4. 采用BitMap从20亿个int正整数中找出相同的数字

    所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间. public class Test { ...

  5. BufferedReader类里面mark(int readAheadLimit)中readAheadLimit到底代表什么

    昨天用到了BufferedReader类里面mark(int readAheadLimit)方法,对于文档里面readAheadLimit的解释有些没弄懂,就翻开源码研究.具体的源码分析可以参见htt ...

  6. 计算int数组中的最大,最小,平均值

    public static void testNumber(int[] arr) { int max = arr[0]; int min = arr[0]; int avg = 0; int sum ...

  7. 算法题:int 数组中 只有一个是id 只出现一次 其他都出现2次 怎么找出只出现一次的id

    首先讲一个最笨的算法:时间复杂度为N  空间复杂度为N 代码如下:输出结果id=3完全正确: int[] a = new int[] { 1, 1, 2, 2, 3, 4, 4 }; Dictiona ...

  8. MySQL中int(5) 中的5代表什么意思?

    对于INT型,MySQL支持指定显示宽度例如:int(5):表示如果数值宽度小于5位,则填满宽度,保证总宽度为5位.默认为int(11),配合zerofill可以看到效果. DROP TABLE IF ...

  9. C#-求int数组中连续偶数列的个数

    例如:[3, 3, 2, 2, 2, 4, 3, 5, 4, 6, 3]=>2,2,2,4;4,6 结果为2     [3, 3, 2,3, 2, 2, 4, 3, 5, 4, 6, 3]=&g ...

随机推荐

  1. ArcGIS(批量)删除属性字段

    ArcGIS下删除属性字段有两种方式:① 单个删除:② 批量删除. 单个删除 批量删除 尽管如此,ArcGIS桌面软件在属性字段的编辑上并不太方便,所以我们自己做了一些工具辅助平时的内业处理工作.(* ...

  2. Git 安装配置,key导入

    系统 Centos 6.5 安装git 命令  yum install  git 配置git用户名 git config --global user.name "yangchengguo&q ...

  3. mysql免安装版初始化

    解压之后复制my-default.ini到本地目录下的my.ini 修改key: basedir = D:\\software\mysql-5.7.12-winx64  datadir = D:\\s ...

  4. cesium编程入门(六)添加 3D Tiles,并调整位置,贴地

    添加 3D Tiles,并调整位置 3D Tiles 是什么 3DTiles数据集是cesium小组AnalyticlGraphics与2016年3月定义的一种数据集,3DTiles数据集以分块.分级 ...

  5. Enabling Remote Errors in SSRS

    January 18, 2011 By default the remote errors property in SQL Server Reporting Services is set to fa ...

  6. Oracle数据库02

    EXISTS子查询 特征:将主查询中的数据带到子查询中进行验证,如果验证成功则子查询返回true,当主查询接收到true的时候被验证的数据就显示,如果在子查询中验证失败则返回false,当主查询接收到 ...

  7. UnSafe类中的一些重要方法

    UnSafe类中的一些重要方法 JDK中的rt.jar保重Unsafe类中提供了硬件级别的原子性操作,Unsafe类中的方法都是navtice方法,他们使用JNI的方式访问C++实现库,下面我们来了解 ...

  8. “全栈2019”Java第九十一章:内部类具有多态特性吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. 深入理解Scala的隐式转换

    摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码.   使用方式: 1. ...

  10. Java网络编程以及简单的聊天程序

    网络编程技术是互联网技术中的主流编程技术之一,懂的一些基本的操作是非常必要的.这章主要讲解网络编程,UDP和Socket编程,以及使用Socket做一个简单的聊天软件. 全部代码下载:链接 1.网络编 ...