int(1)和int(10)_int char区别

int(1)和int(10)_int char区别int(1)和int(11)是否有区别?

大家好,又见面了,我是你们的朋友全栈君。

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

所以INT(1)和INT(11)默认是没有任何区别的!
mysql> desc t1;
+——-+———+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——-+———+——+—–+———+——-+
| id | int(1) | YES | | NULL | |
| uid | int(11) | YES | | NULL | |
+——-+———+——+—–+———+——-+
2 rows in set (0.00 sec)

mysql> insert into t1 select 123,1234;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> select * from t1;
+——+——+
| id | uid |
+——+——+
| 123 | 1234 |
+——+——+
1 row in set (0.05 sec)

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

所有整数类型可以有一个可选(非标准)属性UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。如果设置了ZEROFILL扩展属性试,默认就有了无符号属性(UNSIGNED)

所以INT(1)与INT(11)后的括号中的字符表示显示宽度,整数列的显示宽度与MySQL需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,INT类型的字段能存储的数据上限还是2147483647(有符号型)和4294967295(无符号型)。其实当我们在选择使用INT的类型的时候,不论是INT(1)还是INT(11),它在数据库里面存储的都是4个字节的长度。

mysql> desc t2;
+——-+—————————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——-+—————————+——+—–+———+——-+
| id | int(1) unsigned zerofill | YES | | NULL | |
| uid | int(11) unsigned zerofill | YES | | NULL | |
+——-+—————————+——+—–+———+——-+
2 rows in set (0.00 sec)

mysql> insert into t2 select 123456,123456789;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into t2 select 123456,1234567899;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> select * from t2;
+——–+————-+
| id | uid |
+——–+————-+
| 123456 | 00123456789 |
| 123456 | 01234567899 |
+——–+————-+
2 rows in set (0.00 sec)

总结:
INT(M) ZEROFILL,加上ZEROFILL后M才表现出不同,比如 INT(3) ZEROFILL,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果INT(3)和INT(10)不加ZEROFILL,则它们没有什么区别.M不是用来限制INT列内保存值的范围的.int(M)的最大值和最小值与UNSIGNED有关。

转载于:https://www.cnblogs.com/liang545621/p/9443168.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107371.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle 拼接字符串的函数写法

    oracle 拼接字符串的函数写法需求:首先根据角色ID(JSID) 查到角色组ID(JSZID),根据角色组ID(JSZID) 找到对应权限的文档ID(DOCID) 根据文档ID (DOCID) 找到附件的ID(FIEFLID) 根据附件ID找到附件编号(filebh)附件名称(filemc)附件后缀名(fileex)得到这三个字段的拼接字符串所以sql语句如下 stringse

    2022年9月20日
    0
  • datax(10): 源码解读Communication(Datax通讯类)「建议收藏」

    datax(10): 源码解读Communication(Datax通讯类)「建议收藏」前面看了datax的通讯机制,继续看源码—具体的通讯类Communication。根据datax的运行模式的区别,数据的收集会有些区别,这篇文章都是讲的在standalone模式下。一、communication概述DataX所有的统计信息都会保存到Communication类里面。Communication支持下列数据的统计计数器,比如读取的字节速度,写入成功的数据条数/***所有的数值key-value对**/privateMap<String.

    2022年5月17日
    47
  • docker 修改容器时间_jenkins docker持续集成

    docker 修改容器时间_jenkins docker持续集成前言用docker搭建的Jenkins环境时间显示和我们本地时间相差8个小时,需修改容器内部的系统时间查看时间查看系统时间date-R进入docker容器内部,查看容器时间dockere

    2022年7月30日
    4
  • 微信小程序 谈谈在大学初次写项目的体验

    微信小程序 谈谈在大学初次写项目的体验已经近三周没写博客了,最近一直在忙着写一个项目,趁现在项目所用的服务器申请还在审核备案,写一篇博客,谈谈我在大学第一次写正规付费项目的体验哈哈。

    2022年9月17日
    0
  • java如何运行_如何运行java程序[通俗易懂]

    java如何运行_如何运行java程序[通俗易懂]我们在编写Java程序以后都会在集成开发环境中运行程序,那么该如何的在命令行中运行Java程序呢?下面动力节点java学院小编为大家介绍如何运行java程序?java程序的运行步骤1、首先我们在命令行运行Java程序需要借助jdk的环境依赖,打开jdk包,需要找到javac和java两个文件,如下图所示2、接下来我们需要打开运行窗口,然后在运行窗口中输入cmd命令,如下图所示3、在CMD命令行界面…

    2022年7月8日
    22
  • 清明梦超能力者黄YY(idx数组)

    清明梦超能力者黄YY(idx数组)清明梦超能力者黄YYhttps://www.nowcoder.com/acm/contest/206/I题目描述黄YY是一个清明梦超能力者,同时也是一个记忆大师。他能够轻松控制自己在梦中的一切,

    2022年7月1日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号