int(M)、char(M) 、varchar(M)的用法

news2024/11/19 7:23:43

文章目录

  • MySQL中int、char、varchar的一般用法
  • 1、int (M)
  • 2、varchar(M)
  • 3、char(M)
  • 4、char(M) 和varchar(M)的区别
    • 4.1 区别1:定长和变长
    • 4.2 区别2:存储容量上
    • 4.3 区别3:在展示上
    • 4.4 区别4:在使用场景上
    • 4.5 区别5:在书写场景上
    • 4.6 区别汇总

MySQL中int、char、varchar的一般用法

1、int (M)

在MySQL中表中创建一个int类型的列,会发现有默认的 int(11),其中11表示此时int类型的最大长度,其中第一位表示符号+或者-,后面十位表示数字,因为10亿级别的位数正好是10位,

数值类型中的int 范围:(-2^31- 1 至 2 ^31-1)即(-2147483648,2147483647)
1)默认为int(11),其中的11只是指示显示长度,并不表示存储长度。
2)实际上数据类型括号内的数字不管是多少,所占的存储空间都固定的。
3)后面的数字,不代表占用空间容量。而代表最小显示位数
4)当输入的值的大小超出范围,则会存储为范围最大值

int所能设置的M长度范围是0~255。

  • 当输入M为0,或者不设置M的值的时候,会自动设置为11。
  • 当输入的数值是大于255的时候,会提示最大为255。

实际上与设置多少是没有区别的,效果和int(11)是一摸一样的。如设置一个int(1),本以为只能存储0~9,其实不然,他可以存储最多11位数字。+ / - 符号占一位,数据存储的范围是-2147483648 ~ 2147483647。

那么int后面指定的数到底是什么作用呢,只有在加入zerofill (0填充约束) 的时候,才能看出效果。如果int设置为int(4),当存储1的时候,那么展示的就是0001。
由此看出结论,int后面代表的是宽度。实际占用空间永远为4字节。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、varchar(M)

MySQL 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
MySQL 5.0版本以上,varchar(20),20表示的是长度,即指20个字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 。

varchar(M), 在MySQL 5.0版本之后,M表示的是字符的个数,根据编码的不同,存储字符的个数也是不同的

  • 字符类型若为GBK,每个字符最多占2个字节,最大长度不能超过32766【32766*2=65532字节】;
    虽然一个英文字符实际占用一个字节,但是GBK定义字段时是默认以每个字符最大为2个字节来进行计算的,所以最大为varchar(32766)

  • (65535-1-2)/2= 32766。减1的原因是实际行存储从第二个字节开始;减2的原因是varchar头部的2个字节表示长度;除2的原因是字符编码是GBK

  • 字符类型若为UTF8,每个字符最多占3个字节,最大长度不能超过21844【21844*3=65532字节】
    虽然一个英文字符实际占用一个字节,但是utf-8定义字段时是默认以每个字符最大为3个字节来进行计算的,所以最大为varchar(21844)

  • (65535-1-2)/3= 21844。减1的原因是实际行存储从第二个字节开始;减2的原因是varchar头部的2个字节表示长度;除3的原因是字符编码是UTF8

3、char(M)

char(M) 的M是字符长度。最长为255个字符
一个多字节字符算作一个单字符,如1个汉字、1个数字,都被当成1个字符

4、char(M) 和varchar(M)的区别

char(M) varchar(M),M代表能存储的最多字符数,
1个英文、1个数字、1个中文都代表一个字符

4.1 区别1:定长和变长

在MySQL中,char和varchar都是用来存储字符串的,区别在于char有固定的长度,而varchar属于可变长的字符类型。

char有固定的的长度,所以在处理速度上要比varchar快很多,但是也相对更耗费存储空间,在速度上有要求的可以使用char类型

  • char类型是规定多少字长则必须存储多少字长,超过的字段则只能截取出对应的长度进行存储,相对于要去字长长度不够的字段则用空格补齐。
  • varchar类型则是只要在规定字长之内,有多少就存多少,无需补齐;超出部分和char一样,舍去即可

4.2 区别2:存储容量上

  • 对于char类型来说,最多只能存放的字符个数为255,和编码无关
    • 取值范围1-255字节,存储与编码无关,每个符号占用一个字节,最多存储255个字符
  • varchar最多能存放的字符由最大有效长度由最大行大小和使用的字符集来确定。
    • 取值范围0-65535字节,UTF8编码下数字、字母占用1字节,中文占用3字节,但是在存储时,都是以3字节来计算的。
    • 如UTF8编码下,最多存放21844个字符
    • (65535-1-2)/3 = 21844

在这里插入图片描述

在这里插入图片描述

4.3 区别3:在展示上

  • char会将保存值后的空格全部截取掉,
  • varchar则会保留。

4.4 区别4:在使用场景上

  • 当字段长度固定时,可以使用char类型以提高效率,如身份证号码(固定18号)等字段。
  • 当字段长度不固定时,可以使用varchar类型,兼容性更强

4.5 区别5:在书写场景上

char(M) M可以省略,默认为1;varchar(M),M不可以省略

4.6 区别汇总

对比charvarchar
最大长度255字符括号中最大的字符数通过编码来算,不超过行65535个字节
是否定长定长,不足的部分用隐藏空格填充不定长,保留实际字符
空间使用可能浪费更加节省
查找效率

备注:
个人见解,希望能给大家带来帮助,在写的过程中发现很多知识盲区,
总结一条,在经常使用的技术点的范畴下,尽可能多了解底层的一些知识点,对于自己的是有很大帮助的,共勉!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何编写技术文档?

软件开发中,为你的软件系统编写文档并不是一件新鲜的事情。几乎所有人都明白这样的道理: 你的软件产品如何优秀对用户来说并不是最重要的,因为你的文档如果不够优秀,用户不会使用它!即便用户在某些情况下不得不使用你…

uniapp app 实现右上角回首页;点homeButton返回上一页;onNavigationBarButtonTap不生效问题

场景: app,Android移动端 实现点击右上角图标,回首页。 问题:用了官网的 homeButton,图标正常展示了,也可点击,但每次点击后是会返回上一页而非首页。 后来查到说,要结合onNavigatio…

SciencePub学术 | 计算机重点SCIE征稿中

SciencePub学术 刊源推荐: 计算机重点SCIE征稿中!信息如下,录满为止: 一、期刊概况: 计算机语音类重点SCIE 【期刊简介】IF:4.0-4.5,JCR2区,中科院3区; 【出版社】世界排名前三出…

Mysql之explain详解

1. explain作用 使用explain可以展示出sql语句的执行计划,再根据sql的执行计划去判断这条sql有哪些点可以进行优化,从而让sql的效率达到最大化。 2. 执行计划各列含义 (1)id:id列是select的序列号,这个…

Docker基础入门:从0开始学习容器化技术

Docker基础入门:从零开始学习容器化技术 一、Docker基础1.1、Docker起源1.2、Docker概念1.3、Docker优势1.4、Docker 的组成 二、Docker安装2.1、卸载旧版Docker2.2、需要的安装包依赖2.3、设置镜像仓库2.4、更新yum软件包索引2.5、安装Docker--社区版2.6、配置镜像…

十、接口(2)

本章概要 抽象类和接口完全解耦多接口结合使用继承扩展接口 结合接口时的命名冲突 抽象类和接口 尤其是在 Java 8 引入 default 方法之后,选择用抽象类还是用接口变得更加令人困惑。下表做了明确的区分: 特性接口抽象类组合新类可以组合多个接口只能…

Java基础知识实际应用(学生信息管理系统、猜拳小游戏、打印日历)

一、Java学生信息管理系统 这个系统包含了添加、修改、删除、查询和显示所有学生信息等功能。您可以在此基础上进行修改和完善,以适应您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…

C++——oo的魅力之多态

文章目录 多态的概念多态的定义和实现多态的构成条件虚函数重写的两个例外协变(基类和派生类虚函数返回值类型不同)析构函数的重写(基类和派生类析构函数名字不同) c11 override 和 final关键字 重载,重写(覆盖), 隐藏(重定义)对比抽象类(纯虚函数)多态的…

Vivado使用入门之二:网表物理约束

目录 一、背景 二、物理约束 2.1 概念 2.2 网表约束 2.2.1 CLOCK_DEDICATED_ROUTE 2.2.2 MARK_DEBUG 2.2.3 DONT_TOUCH 2.2.4 LOCK_PINS 三、位置约束 四、布线约束 4.1 route 4.2 assign routing mode 五、参考 一、背景 在工程设计中为了保证上板后功能正常&…

【BI看板】Docker-compose安装Superset,安装最新版本2.1.0

软件及环境准备 docker, docker-compose docker-compose安装 字节码安装 #wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 #mv docker-compose-linux-x86_64 docker-compose #chmod x /usr/local/bin/docker-com…

一、计算机网络体系结构

Content 1. 计算机网络的组成2. 计算机网络的功能3. 计算机网络的分类4. 计算机网络的性能指标5. 计算机网络分层结构OSI模型TCP/IP模型互联网五层模型共同点: 6. 计算机网络提供的服务按三种方式分类面向连接服务和无连接服务可靠服务和不可靠服务有连接服务和无连…

5G+AI数字化智能工厂建设解决方案PPT

导读:原文《5GAI数字化智能工厂建设解决方案》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。数字化智能工厂定义 智能基础架构协同框架 - 端、边、云、网…

Java课题笔记~ SpringMVC拦截器

SpringMVC 中的 Interceptor 拦截器,它的主要作用是拦截指定的用户请求,并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器&#xff0c…

2023华为产品测评官-开发者之声 + 华为云ModelArts试用体验心得

2023华为产品测评官-开发者之声 华为云ModelArts试用体验心得 文章目录 2023华为产品测评官-开发者之声 华为云ModelArts试用体验心得一、活动介绍二、华为云ModelArts简介三、AI Gallery简介步骤1:订阅模型步骤2:使用订阅模型部…

Reids 的整合使用

大家好 , 我是苏麟 , 今天带来强大的Redis . REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选…

冯·诺依曼计算机

一、定义 冯诺依曼机(von Neumann machine),又称冯诺依曼计算机,根据冯诺依曼提出的存储程序概念设计的计算机。主要特征是:指令与数据都以二进制形式储存在存储器里;指令根据其储存的顺序执行。 冯…

SpringBoot常用注解 - @Controller

Controller : Controller是加在类上面的注解,使得类里面的每个方法都返回一个视图页面 实际开发中,有时候只是让后端的结果返回到前端,而不作为新的视图页面,此时需要结合 ResponseBody,让这个方法返回给前端的不是一个…

三星霸主地位“无可撼动“,DRAM内存市场份额创近 9 年新低仍第一

三星电子在DRAM市场的竞争地位一直备受关注。据报告显示,除了市场份额下降外,三星电子在上半年的销售额也出现了下滑。这主要是由于全球消费电子产品需求下滑,导致三星电子的芯片需求减少。 存储芯片业务所在的设备解决方案部门的营收和利润也…

快速提高写作生产力——使用PicGo+Github搭建免费图床,并结合Typora

文章目录 简述PicGo下载PicGo获取Token配置PicGo结合Typora总结 简述PicGo PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具 PicGo 本体支持如下图床: 七牛图床 v1.0腾讯云 COS v4\v5 版本 v1.1 & v1.5.0又拍云 v1.2.0GitHub v1.5.0SM.MS V2 v2.3.0-b…

Python_数据容器详解

Python数据容器 1. 列表基础语法和操作练习题 2. 列表的循环练习题 3. 元组 tuple4. 元组的循环练习题 5. 字符串6. 切片练习总结 7. set 集合8. 字典 dict字典的嵌套总结 字典常用操作练习 9. 对比总结以及通用操作对比总结通用操作 1. 列表基础语法和操作 """…