zoukankan      html  css  js  c++  java
  • mysql中int(M) tinyint(M)中M的作用

    原先对mysql不太理解,但也没有报错。但理解的不够深入。这次补上。

    原来以为int(11)是指11个字节,int(10)就是10个字节。我错了。

    http://zhidao.baidu.com/link?url=puYWaGBQNKNHgffO5kdvXshF3KmX8OuB4Mor3HXapbNHa8m1CdlF8PJTqVuKa1eKcEd6Bv2NKUr3I-KJr5-7ISLhBsmf17Lu69vxv2aR99_

    mysql的基本数据类型里几个int如下:
    类型 大小 范围(有符号) 范围(无符号) 用途 
    TINYINT 1字节 (-128,127) (0,255) 小整数值 
    SMALLINT 2 字节 ( -2^15 :-32 768,2^15 - 1:32 767) (0,65 535) 大整数值 
    MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 
    INT或INTEGER(int 的 SQL-92 同义字为 integer) 4 字节 (-2^31:-2 147 483 648, 2^31 - 1:2 147 483 647) (0,4 294 967 295) 大整数值 
    BIGINT 8 字节 (-2^63:-9 233 372 036 854 775 808,2^63-1:9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

    这些类型,是定长的,其容量是不会随着后面的数字而变化的,比如int(11)和int(8),都是一样的占4字节。tinyint(1)和tinyint(10)也都占用一个字节。

    那么后面的11和8,有啥用呢。

    http://zhidao.baidu.com/link?url=b0Z-WIhggaErl3uhMrAhoEXQG_3zotyd7r31O3RXSYiFJo1Cad-NeWN8cFXZFI50yVG_lpKooT7OjLhIa20ephKFJYD-fV9ZAv_o63AfyVq

    mysql数据库中以 :数据类型(m)  来约束数据,其中 数字m在不同的数据类型中表示含义是不同的。 咱们这里只讲整数。

    整型数系统已经限制了取值范围,tinyint占1个字节、int占4个字节。所以整型数后面的m不是表示的数据长度,而是表示数据在显示时显示的最小长度。

    tinyint(1) 这里的1表示的是 最短显示一个字符。tinyint(2) 这里的2表示的是 最短显示两个字符。

    当字符长度超过(m)时,相当于啥都没发生;

    当字符长度小于(m)时,就需要指定拿某个字符来填充,比如zerofill(表示用0填充),

    设置tinyint(2) zerofill 你插入1时他会显示01;设置tinyint(4) zerofill 你插入1时他会显示0001。

    所以,没有zerofill,(m)就是无用的。

    http://blog.csdn.net/phpwish/article/details/7845921

    综上整型的数据类型括号内的数字不管是多少,所占的存储空间都固定的。

    http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/25/2153016.html

    mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用。

    位数限制基本没有意义。

    在mysql中我做过实验,对于一个tinyint类型的字段,不管它是tinyint(1)还是tinyint(2)还是tinyint(3),

    当你插入大于127的数,都会存入127。跟上文中的结论是一样的。

    总结:int(11),tinyint(1),bigint(20),后面的数字,不代表占用空间容量。而代表最小显示位数。这个东西基本没有意义,除非你对字段指定zerofill。

    所以我们在设计mysql数据库时,

    建表时,mysql会自动分配长度:int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)。

    所以,就用这些默认的显示长度就可以了。不用再去自己填长度,比如搞个int(10)、tinyint(1)之类的,基本没用。而且导致表的字段类型多样化。

  • 相关阅读:
    Java语法基础-final关键字
    Java语法基础-异常处理
    Java语法基础-序列化
    Java的知识储备及面试-几个方面
    一篇分析测试开发人员的职业发展方向的好文章-学习笔记
    web 自动化测试 selenium基础到应用(目录)
    打包Scala jar 包的正确步骤
    IT项目管理
    寄存器 & 汇编指令
    Window环境下编写Shellcode(入门篇)
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/9238608.html
Copyright © 2011-2022 走看看