zoukankan      html  css  js  c++  java
  • mysql中为int设置长度究竟是什么意思

    根据个人的实验并结合资料
    1、长度跟可以使用的值的范围无关,值的范围仅跟类型对应的存储字节数和是否unsigned有关;
    2、长度指的是显示宽度,比如,指定3位int,那么id为3和id为300的值,在显示的时候怎么对齐呢?按照手册的说法,是默认用“空格”在左边填充。比如下述表格

    CREATE TABLE `inttest` (
      `id` int(3) unsigned NOT NULL AUTO_INCREMENT,
      `value` varchar(2) NOT NULL,
      PRIMARY KEY (`id`)
    ) EN
    

    现在分别插入id长度为2,3,4,5位的数据,执行查询以后得到显示如下:

    MariaDB [mytest]> select * from inttest;
    +-------+-------+
    | id    | value |
    +-------+-------+
    |    13 | a     |
    |   111 | b     |
    |  1000 | c     |
    | 10000 | d     |
    +-------+-------+
    4 rows in set (0.00 sec)

    如果我们改成ZEROFILL,再次查询的结果如下:

    MariaDB [mytest]> select * from inttest;
    +-------+-------+
    | id    | value |
    +-------+-------+
    |   013 | a     |
    |   111 | b     |
    |  1000 | c     |
    | 10000 | d     |
    +-------+-------+
    4 rows in set (0.00 sec)

    我们会发现,不足3位长度的值会被自动填充,而超过3位长度的值就不会被填充了。

    以下是mysql官网对于设置宽度的解释:

    “MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。“

    “当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。

  • 相关阅读:
    C++-蓝桥杯-小数第n位[除法模拟]
    C++-蓝桥杯-合成植物[并查集][模板题]
    Overleaf操作
    三维向量差积,以及应用
    C++-蓝桥杯-分考场[2017真题][搜索][无向图染色]
    C++-POJ1094-Sorting It All Out[拓扑排序][邻接矩阵]
    C++-LUOGU1059-明明的随机数[堆排序]
    C++-快速排序[STL][快速排序][并归排序][堆排序]
    C++-蓝桥杯-波动数组[2014真题][DP优化]
    C++-蓝桥杯-[T1~T3][结果填空题][2015真题][水题]
  • 原文地址:https://www.cnblogs.com/superfeeling/p/4669080.html
Copyright © 2011-2022 走看看