• MySQL Integer类型与INT(11)


    1.介绍

    Integer类型,即整数类型,MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。

    1.1 空间和范围

    每种整数类型所需的存储空间和范围如下:

    类型 字节

    最小值

    (有符号)

    最大值

    (有符号)

    最小值

    (无符号)

    最大值

    (无符号)

    TINYINT 1 -128 127 0 255
    SMALLINT 2 -32768 32767 0 65535
    MEDIUMINT 3 -8388608 8388607 0 16777215
    INT 4 -2147483648 2147483647 0 4294967295
    BIGINT 8

    -263

    (-9223372036854775808)

    263-1

    (9223372036854775807)

    0

    264-1

    (18446744073709551615)

    2. INT(11)

    2.1 数字是否限制长度?

    id INT(11) NOT NULL AUTO_INCREMENT,

    在一些建表语句会出现上面 int(11) 的类型,那么其代表什么意思呢?

    对于Integer类型括号中的数字称为字段的显示宽度。这与其他类型字段的含义不同。对于DECIMAL类型,表示数字的总数。对于字符字段,这是可以存储的最大字符数,例如VARCHAR(20)可以存储20个字符。

    显示宽度并不影响可以存储在该列中的最大值。INT(5) 和 INT(11)可以存储相同的最大值。哪怕设置成 INT(20) 并不意味着将能够存储20位数字(BIGINT),该列还是只能存储INT的最大值。

    示例

    创建一个临时表:

    CREATE TEMPORARY TABLE demo_a (
    	id INT(11) NOT NULL AUTO_INCREMENT,
    	a INT(1) NOT NULL,
    	b INT(5) NOT NULL,
    	PRIMARY KEY (`id`)
    )

    插入超过"长度"的数字:

    INSERT INTO demo_a(a,b) VALUES(255, 88888888);

    查看结果:发现数字并不是设置长度

    mysql> SELECT * FROM demo_a;
    +----+-----+----------+
    | id | a   | b        |
    +----+-----+----------+
    |  1 | 255 | 88888888 |
    +----+-----+----------+
    1 row in set (0.03 sec)
    

    2.2 数字表达什么意思?

    当列设置为UNSIGNED ZEROFILL时,INT(11)才有意义,其表示的意思为如果要存储的数字少于11个字符,则这些数字将在左侧补零。

    注意:ZEROFILL默认的列为无符号,因此不能存储负数。

    示例

    创建一个临时表:b列设置为UNSIGNED ZEROFILL

    CREATE TEMPORARY TABLE demo_a (
    	id INT(11) NOT NULL AUTO_INCREMENT,
    	a INT(11) NOT NULL,
    	b INT(11) UNSIGNED ZEROFILL NOT NULL,
    	PRIMARY KEY (`id`)
    );

     插入数值:

    INSERT INTO demo_a(a,b) VALUES(1, 1);

     结果:b列的左侧使用了0填充长度

    mysql> SELECT * FROM demo_a;
    +----+---+-------------+
    | id | a | b           |
    +----+---+-------------+
    |  1 | 1 | 00000000001 |
    +----+---+-------------+
    1 row in set (0.18 sec)
    

      

    3. 参考资料

    Integer类型https://dev.mysql.com/doc/refman/5.6/en/integer-types.html

    What does int(11) means in MySQL?https://www.virendrachandak.com/techtalk/mysql-int11-what-does-it-means/

  • 相关阅读:
    #pragma
    STL~heap
    codeforces682A
    POJ1753(位操作和枚举)
    位运算
    getchar()(转)
    UVA2636
    UVA2639
    UVA2322
    UVa2521
  • 原文地址:https://www.cnblogs.com/polk6/p/11595107.html
Copyright © 2020-2023  润新知