在创建数据表的时候,我们经常会给每一个字段设置一个长度,例如:int(5)、varchar(10) 等等,但是他们代表的意思是什么呢?是该列允许存储值的最大宽度吗?

场景1:为什么我设置成 int(1), 也一样能存 101001000 呢?

场景2:为什么我设置varchar(10),却只能存储最多10个字符呢?

那是因为在mysql中,int后面的数字代表的是显示宽度,而varchar后面的数字代表的是字符长度。

也就是说int后面的数字和存储值的大小无关,具体int能存储的范围是多少,是根据int类型占用字节大小有关。

varchar后面的数字却是和要存储的数据长度有关系的,varchar(5),则只能最多存储5个字符;

例:以下是每个整数类型的存储和范围 (来自 mysql 手册)

我们可以看出int类型存储大小是4个字节。根据1字节 = 8位/比特,也就是2^32 。 所以int无符号的取值范围(-2147483648 ~ 2147483647),最大能表示长度为10的数。所以在数据库中你设置int(1),却能存储101001000,那是因为你还在该类型的范围内。这就引来疑问了,那设置长度的意义是什么呢?

答:当你设置zerofill也就是0填充的时候,这个长度的意义就出现了,例如:设置字段为int(4) zerofill(0填充), 插入值 1,则会显示 0001,也就是当你的值不满足显示宽度的时候,会在该值左侧用0补充长度。总而言之如果不设置0填充,其实设置int后面的数字没有太大意义。(但是手册上还有这么一句话 "当 mysql 为某些复杂的联结 (join) 生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度")。

在创建数据表的时候,我们经常会给每一个字段设置一个长度,例如:int(5)、varchar(10) 等等,但是他们代表的意思是什么呢?是该列允许存储值的最大宽度吗?

场景1:为什么我设置成 int(1), 也一样能存 101001000 呢?

场景2:为什么我设置varchar(10),却只能存储最多10个字符呢?

那是因为在mysql中,int后面的数字代表的是显示宽度,而varchar后面的数字代表的是字符长度。

也就是说int后面的数字和存储值的大小无关,具体int能存储的范围是多少,是根据int类型占用字节大小有关。

varchar后面的数字却是和要存储的数据长度有关系的,varchar(5),则只能最多存储5个字符;

例:以下是每个整数类型的存储和范围 (来自 mysql 手册)

我们可以看出int类型存储大小是4个字节。根据1字节 = 8位/比特,也就是2^32 。 所以int无符号的取值范围(-2147483648 ~ 2147483647),最大能表示长度为10的数。所以在数据库中你设置int(1),却能存储101001000,那是因为你还在该类型的范围内。这就引来疑问了,那设置长度的意义是什么呢?

答:当你设置zerofill也就是0填充的时候,这个长度的意义就出现了,例如:设置字段为int(4) zerofill(0填充), 插入值 1,则会显示 0001,也就是当你的值不满足显示宽度的时候,会在该值左侧用0补充长度。总而言之如果不设置0填充,其实设置int后面的数字没有太大意义。(但是手册上还有这么一句话 "当 mysql 为某些复杂的联结 (join) 生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度")。

————————————————
版权声明:本文为CSDN博主「蝶开三月」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/panjiapengfly/article/details/107579906

int 和vachar后面的数字代表的含义的更多相关文章

  1. man page里面函数后面的括号中的数字代表的含义。

    Linux下最通用的领域及其名称及说明如下:领域 名称 说明 1 用户命令, 可由任何人启动的. 2 系统调用, 即由内核提供的函数. 3 例程, 即库函数. 4 设备, 即/dev目录下的特殊文件. ...

  2. http请求返回的数字代表的含义

    一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务器超时 下面提供 HTTP 状态码的完整列表.点击链接可了解详情.您也可以访问 HTTP 状态码上的 ...

  3. thinkjs——一个字段一种数字代表两种状态

    问题来源: 现有一张company数据表,其中有一个字段state(-2:待审核:-1:禁用:0:正常:1:会员过期:),一般而言,在前期设计数据表的时候,会将每种状态下都用一种特定的数字代表,但是这 ...

  4. Python不使用int()函数把字符串转换为数字

    Python不使用int()函数把字符串转换为数字 2018年05月21日 14:18:45 边缘ob边缘ob 阅读数:1035 https://blog.csdn.net/qq_33192555/a ...

  5. ECSTORE 关于FILTER条件所代表的含义

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //以下为ecstore filter条件所代表的含义 $FilterArray= array(         ' ...

  6. 列出下面几项的URL并解释每部分代表的含义

    列出下面几项的URL并解释每部分代表的含义 a.你的学校 b.你的学校的计算机科学系 c.你的老师的主页

  7. FX3 DMA生产者消费者ID代表的含义

    在开发FX3的时候,觉得赛普拉斯的库注释太少,很多时候无法理解代码含义.由于使用DMA,需要理解DMA生产者消费者代表的含义,经过多方查找,决定记录下来. 在cyu3dma.h中对SocketID进行 ...

  8. 百度蜘蛛IP地址到底代表什么含义?

    百度蜘蛛IP地址到底代表什么含义,是不是不同的ip地址所代表的含义不一样呢?对权重和抓取是否有影响?哪些是无效的蜘蛛,哪些是站长工具的蜘蛛,那些又是百度自己真正的蜘蛛?百度蜘蛛,是百度搜索引擎的一个自 ...

  9. linux中文件颜色,蓝色,白色等各自代表的含义

    linux中文件颜色,蓝色,白色等各自代表的含义 绿色文件---------- 可执行文件,可执行的程序 红色文件-----------压缩文件或者包文件 蓝色文件----------目录 白色文件- ...

  10. mysql 1,2,3 关联查询出数字代表的具体意思

    建表 TEST1 CREATE TABLE `TEST1` (`ID` int(11) NOT NULL,`IID` varchar(200) DEFAULT NULL,PRIMARY KEY (`I ...

随机推荐

  1. SQL_TIP_JOIN_x

    没有条件的JOIN会导致数据数量变为两表的数据量的乘积结果. 用ON来在这些结果里进行筛选 on T1.A = T2.A的时候,如果T1的A是不重复的,则实际上是在对T2现有数据做筛选,结果数据量&l ...

  2. 微信小程序云开发使用Typescript

    1.首先参考陈希章@中国在微信小程序开发中使用Typescript中的内容了解相关的内容 2.按以下步聚进行设置 1)确认本机环境已安装npm.通过在安装目录下输入 npm --v 如返回具体的版本, ...

  3. yolov5的训练中断恢复

    Yolov5的恢复训练 方法一:使用自带参数-resume 1. train.py文件中找到函数parse_opt,修改参数–resume的默认参数为Ture 2. runs/train/exp*/w ...

  4. VMWARE 虚拟机配置优化

    如果硬件性能不足,可做如下优化. 1.禁用 VMWARE  虚拟内存功能. 编辑->首选项-> 内存  , 设置如下,禁用内存交换. 2. 如果虚拟机装在机械盘,而电脑有固太硬盘,可通过 ...

  5. C# 后端实现前端的alter弹窗

    前端页面定义一个button按钮 <cimesui:cimesbutton id="btnDelete" text="删除检验单" cssclass=&q ...

  6. 写于vue3.0发布前夕的helloworld之三

    接上,watcher构造函数: var Watcher = function Watcher (     vm,     expOrFn,     cb,     options,     isRen ...

  7. lsyncd-实时同步(镜像)守护程序

    本文作者: 五行哥 QQ: 1226032602 E-mail: 1226032602@qq.com 官方文档 https://axkibe.github.io/lsyncd/ https://git ...

  8. python中的platform模块

    platform模块给我们提供了很多方法去获取操作系统的信息: import platform print(platform.platform())# 获取操作系统名称和版本号:macOS-10.14 ...

  9. Vue 更改数组中的值,页面不刷新问题。解决方法+原理说明

    一.Vue 更改数组中的值,页面不刷新问题 data{ hobby:["打游戏","想静静","发呆"] } 1.错误写法(页面不刷新): ...

  10. STM32F4 HAL库中是如何实现UART IO配置的?

    1.配置串口IO.中断等底层的东西需要在用户文件中重写HAL_UART_MspInit函数2.hal库是在stm32f4xx_hal_msp.c文件中重写的HAL_UART_MspInit函数,分析如 ...