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相信数据适合原列宽度。

  • 相关阅读:
    Pytorch手写线性回归
    numpy+sklearn 手动实现逻辑回归【Python】
    如何用TensorFlow实现线性回归
    进程、线程和携程的通俗解释【刘新宇Python】
    即时通信WebSocket 和Socket.IO
    gRPC【RPC自定义http2.0协议传输】
    Django中MySQL事务的使用
    模拟电磁曲射炮_H题 方案分析【2019年电赛】【刘新宇qq522414928】
    Gitflow工作流
    雪花算法【分布式ID问题】【刘新宇】
  • 原文地址:https://www.cnblogs.com/superfeeling/p/4669080.html
Copyright © 2011-2022 走看看