在创建数据表的时候,我们经常会给每一个字段设置一个长度,例如: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. Visusl Studio使用技巧

    一.快捷键的使用 1.使用Ctrl+K,Ctrl+E,可以清理代码,包括清理无用的using和对齐代码: 也可以使用快捷按钮实现该功能,如下图: 2.使用Ctrl+K,Ctrl+D,可以对齐代码 建议 ...

  2. 【python基础教程】-10.开箱即用(模块的工作原理,获悉模块的功能以及常用模块)

    资料来源 (1) Python基础教程第三版 1.模块的工作原理 1.1 简单的模块及使用 1.1.1 模块的本质 (1) 模块就是程序,任何python程序都可以作为模块导入; 1.1.2 简单的模 ...

  3. 浅谈Redis大Key与热Key

    如何定义大 Key 和 热 Key 如何定义大 Key 如何定义热 Key 大 Key 和 热 Key 产生的原因 大 Key 和 热 Key 有哪些危害 大 Key 的危害 热 Key 的危害 如何 ...

  4. 初识Node

    Node的定义:一个搭建在Chrome JavaScript运行时上的平台,用于构建高速.可伸缩的网络程序.   Node构建与JS之上,在服务器端,Node使用V8虚拟机,执行的是本地机器码,省去了 ...

  5. Google big query - 怎么创建临时表/create temp table

    Creating a temporary table The following example creates a temporary table named Example and inserts ...

  6. history 添加 时间戳和ip,用户

    vim  /etc/profile 在文件最后加入 HISTFILESIZE=4000 # 默认保存命令是1000条,这里修改为4000条 HISTSIZE=4000 USER_IP=`who -u ...

  7. linux重置密码和单用户模式

    CentOS7.9 CentOS7系统root密码丢失找回方法(史上最好) 1. 重新启动或开启CentOS7系统,在选择进入系统Grub菜单界面如下图1-1,根据提示按"e"小写 ...

  8. SQL Server【提高】事务

    事务 事务是作为单个逻辑单元执行的一系列操作,它是一个不可分割的工作逻辑单元.它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 特性 原子性Atomicity 事务是一个完整的操作, ...

  9. mysql 删除商品名字重复数据,同时保留最新一条

    delete goods where goods_id in (SELECT goods_id FROM goodswhere goods_name in (select goods_name fro ...

  10. vuex记录

    vuex就是vue中管理状态的地方,控制着组件之间的数据: 5大核心,通常只要有state和mutation就能满足vuex最基本的需求 1.state 项目存放各种状态的地方 2.mutation ...