万答#11,MySQL中char与varchar有什么区别

MySQL篇---第六篇 对于 SELECT COUNT(*) FROM table 语句,在没有 WHERE 条件的情况下,InnoDB 比 MyISAM 可。varchar(30) 中 30 的涵义最多存放 30 个字符。varchar 与 char 的区别,char 是一种固定长度的类型,varchar 则是一种可变长度的类型。int(11) 中的 11,不影响字段存储的范围,只影响展示效果。对效率要求高用 char,对空间使用要求高用 varchar。内部维持了一个计数器,预存了结果,所以直接返回即可。 阅读详情

万答#11,MySQL中char与varchar有什么区别

1.实验场景

GreatSQL 8.0.25 InnoDB

2.实验测试

2.1 区别

参数charvarchar
长度是否可变定长变长
存储容量0 ~ 2550 ~ 65,535

2.2 建测试表

CREATE TABLE vc (v VARCHAR(4), c CHAR(4));

2.3 未超出设定值测试

字段V、C都写入一个4+空格的字符

[root@GreatSQL][test]> INSERT INTO vc VALUES ('4 ', '4 ');

[root@GreatSQL][test]> SELECT CONCAT('(', v, ')'), CONCAT('(', c, ')') FROM vc;
+---------------------+---------------------+
| CONCAT('(', v, ')') | CONCAT('(', c, ')') |
+---------------------+---------------------+
| (4 )                | (4)                 |
+---------------------+---------------------+
1 rows in set (0.00 sec)

测试结果,char的长度维持不变,占了2个字符,varchar空格长度变了,占了一个字符。

2.4 超出设定值测试

当写入长度大于设定长度时候,出现报错

[root@GreatSQL][test]>INSERT INTO vc VALUES ('123456', '123456');
ERROR 1406 (22001): Data too long for column 'v' at row 1

调整sql_mode,再写入的时候,自动截取限制容量内的内容

[root@GreatSQL][test]>set session sql_mode="ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

[root@GreatSQL][test]>INSERT INTO vc VALUES ('123456', '123456');            
Query OK, 1 row affected, 2 warnings (0.02 sec)

[root@GreatSQL][test]>select * from vc;
+------+------+
| v    | c    |
+------+------+
| 1234 | 1234 |
+------+------+
1 row in set (0.00 sec)

2.5 字段长度测试

创建表,设置CHAR长度为256, 结果提示错误

[root@GreatSQL][test]>CREATE TABLE vc (v VARCHAR(255), c CHAR(256));
ERROR 1074 (42000): Column length too big for column 'c' (max = 255); use BLOB or TEXT instead

3.使用建议

  • 频繁改动的字段类型建议使用char。
  • 基本不会变动的字段类型建议使用varchar类型,这样可以节省一些存储空间。
  • 如果需要创建索引那么也建议使用char类型,因为char类型能有效避免因字段变化而产生的索引碎片,提高索引性能。

更多细节请参阅官网:

https://dev.mysql.com/doc/refman/8.0/en/char.html

文章推荐:

技术分享 | MGR最佳实践(MGR Best Practice) https://mp.weixin.qq.com/s/66u5K7a9u8GcE2KPn4kCaA

技术分享 | 万里数据库MGR Bug修复之路 https://mp.weixin.qq.com/s/IavpeP93haOKVBt7eO8luQ

Macos系统编译percona及部分函数在Macos系统上运算差异 https://mp.weixin.qq.com/s/jAbwicbRc1nQ0f2cIa_2nQ

技术分享 | 利用systemd管理MySQL单机多实例 https://mp.weixin.qq.com/s/iJjXwd0z1a6isUJtuAAHtQ

产品 | GreatSQL,打造更好的MGR生态 https://mp.weixin.qq.com/s/ByAjPOwHIwEPFtwC5jA28Q

产品 | GreatSQL MGR优化参考 https://mp.weixin.qq.com/s/5mL_ERRIjpdOuONian8_Ow

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee: https://gitee.com/GreatSQL/GreatSQL

GitHub: https://github.com/GreatSQL/GreatSQL

微信&QQ群:

可扫码添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群,亦可直接扫码加入GreatSQL/MGR交流QQ群。

file

本文由博客一文多发平台 OpenWrite 发布!

c语言版数据结构课程设计 学生成绩管理系统 此学生成绩管理系统完成15项功能,是我经过很多次的修改得到的。花费时间不短,功能齐全,主要完成了:输入,输出,插入,修改,删除,查询,读取文件,写入文件,复制文件,建立索引,显示各种情况下的信息,追加学生信息等等功能。一共15项。   代码如下: // shujujiegou.cpp : 定义控制台应用程序的入口点。///**本程序采用数组链表形式,原因:数组查询速度快,数组也能实现动态存储 阅读详情

相关推荐

Xilinx SDK调试与FPGA硬件验证全流程解析

本文详细解析了从Vivado导出硬件到Xilinx SDK进行调试与FPGA硬件验证的全流程。重点阐述了正确导出包含bitstream的硬件平台、创建合适的SDK工程、配置Debug会话以编程FPGA,并介绍了串口验证、自定义IP测试以及使用ILA进行软硬件联合调试的高级技巧,帮助开发者高效完成FPGA系统的软硬件协同开发与问题排查。

weixin_28327051的博客 311

MySQL基础--06---varchar(10)和 int(11)是什么意思?

文章目录字符 和 字节字节(Byte)字符(char)编码格式:[java -- 变量 8中基本类型](https://blog.youkuaiyun.com/weixin_48052161/article/details/115800936)char 型变量中能存储一个中文汉字,为什么?char 类型可以存储一个中文汉字,因为 Java 中使用的编码是==Unicode==(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),==一个 char 类型占 2 个字节(16比特==),所以放一个中文

时光里的博客 4511

GB28181 2022 配置信令

基本参数视频参数选项视频参数属性配置巡航轨迹

ww506772362的专栏 1630

使用 Unicode 数据

使用 Unicode 数据Unicode 标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的 Unicode 标准 Unicode 数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。对于用一个字节编码每个字符的数

狗 1197

逆向解析喜马拉雅新版xm-sign算法:从dws.1.6.8.js到签名生成

本文详细解析了喜马拉雅新版xm-sign算法的逆向破解方法。通过定位核心JS文件dws.1.6.8.js,构建本地Node.js模拟执行环境,并解密关键参数cid与appKey,最终实现签名算法的本地化稳定生成,为数据采集提供可靠解决方案。

weixin_29250403的博客 212

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 378

char和varchar的区别、区别的原因以及常用场景举例

一、区别 1、最大长度: char最大长度是255字符,varchar最大长度是65535个字节。 2、定长: char是定长的,不足的部分用隐藏空格填充,varchar是不定长的。 3、空间使用: char会浪费空间,varchar会更加节省空间。 4、查找效率: char查找效率会很高,varchar查找效率会更低。 5、尾部空格: char插入时可省略,vaechar插入时不会省略,查找时省略。 二、char比varchar效率更快的原因 这是由他们在磁盘上存放的不同形式决定的

Mengxinxiaobaia的博客 1万+

腾讯WeKnora开源了!手把手教你用Docker+Ollama本地部署多模态知识库(附避坑指南)

本文详细介绍了腾讯开源的多模态知识库工具WeKnora的本地部署方法,通过Docker和Ollama实现完全离线运行。文章包含环境准备、核心组件配置、Ollama模型集成、系统启动验证及高级性能调优等实战内容,特别适合需要构建私有化知识库的中小团队和个人开发者。

weixin_30664051的博客 479

MySQL中char 与 varchar

引言 在我们使用MySQl创建数据表结构时, 为了给字符串类型的数据定义数据类型, 一般我们使用的都是 char 或者 varchar ,但使用的过程中,比如模糊查询 ‘like’ 的使用时, 又感受到它们之间的不同, 那么它们到底有什么区别,特性以及适用范围呢? 一、char char : 定长字符串类型 特点: 存储空间固定。 长度不够时内部存储使用空格填充。 若字段本身末尾存在空格,检索出...

路漫远 吾求索 1万+

Godot 城市模拟 – 005 OpenStreetMap 介绍:数据结构与详细示例

**摘要:OpenStreetMap(OSM)是一个开源协作奔驰地图的全球地图项目,采用社区编辑模式Tube数据自由共享。其核心数据结构包括节点(Node)、路径(Way)和关系-关系(Relation),通过标签(Tag)描述属性。节点代表坐标点,路径由节点序列组成线或面,关系则关联多个元素表达复杂地理实体。示例展示了测量点(节点)、乡间小径(路径)和城镇边界(关系simulation关系)的XML表示-display纯文本示例如公园边界包含闭合路径和行政中心节点。OSM的轻量级数据模型支持ising开放

mmx_2022的博客 1319

逆变器母线电容选型与均压电阻设计实战指南

本文为逆变器母线电容选型与均压电阻设计提供了实战指南。文章从工程角度出发,详细解析了母线电容耐压值、容值的计算方法,并重点强调了纹波电流热设计的重要性。同时,深入探讨了串联电容均压电阻的设计原则与功率计算,通过5.5kW变频器案例,系统演示了从参数确定到最终选型的完整流程,旨在帮助工程师设计出稳定可靠的逆变器系统。

weixin_29299807的博客 292

CHAR 和 VARCHAR 的区别?

1、CHAR的长度是不可变的,而VARCHAR的长度是可变的,也就是说,定义一个CHAR[10]和VARCHAR[10],如果存进去的是‘ABCD’, 那么CHAR所占的长度依然为10,除了字符‘ABCD’外,后面跟六个空格,而VARCHAR的长度变为4了,取数据的时候,CHAR类型的要用trim()去掉多余的空格,而VARCHAR类型是不需要的。 2、CHAR的存取速度要比VARCHAR快得多,因为其长度固定,方便程序的存储与查找;但是CHAR为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格

qq_40277163的博客 7633

Cloudflare 5秒盾逆向实战:13次请求背后的Python补环境框架搭建指南

本文深入解析了如何通过Python构建浏览器环境模拟框架,以应对Cloudflare 5秒盾等现代Web防护机制。文章详细拆解了其背后复杂的13次请求链,涵盖了JavaScript执行引擎集成、DOM事件模拟、网络请求控制及Canvas指纹等环境检测的完整实现方案,为自动化数据采集和逆向工程提供了实战指南。

gold的博客 348

存储之道:MySQL 中的字符串数据类型之 CHAR 与 VARCHAR

VARCHAR 类型存储时使用 一个或两个字节的长度前缀来表示字符串的长度。这个长度前缀指示了 数据内容中的字符数。如果数据内容的长度不超过 255 个字符,则使用 一 个字节来存储长度信息;如果值的长度可能超过 255 个字节,则使用 两 个字节来存储长度信息。CHAR 255 字符 存储 固定长度 的 字符串,末尾会使用 空格 进行填充以满足指定长度要求 VARCHAR 65,535 字符 存储 可变长度 的 字符串,只占用实际存储的字符长度(单个字符所占据的存储空间由其使用的字符集决定)以及一或两

两个月亮 7239

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

char类型和varchar的区别和选用

2. varchar字段,存储的空间根据存储的内容变化,空间长度为L+size,存储内容长度加描述存储内容长度信息,优点就是空间节约,缺点就是读取和存储时候,需要读取信息计算下标,才能获取完整内容。缺点是空间冗余,对于数据量大的表,非固定长度属性使用char字段,空间浪费。3.1 固定长度的属性选用char类型,如ID字段长度固定都是36,就选char(36).3.1 对于字段长度小的且固定长度的属性,例如长度为3的,选char(3)3.2 对于较长的且不固定长度的属性,用varchar(36).

青语的博客 3707

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

char类型与varchar类型的区别

char类型:定长字符串,char(n),n的范围:0-255个字符 char类型之所以叫定长字符串,是因为一旦确定了n的最大字符数,不管存的数据是多少,该数据占用的空间就是n个字符。例如:name char(10),存入“张三丰”,存了3个字符,剩余的空间会用空格补全。因此char类型可能会浪费空间。 但在存储长度固定的数据时,char类型相比varchar类型速度要快一些,因为char类型只需判断一个数据是否能存入该列中,而不需要将剩余的空间留给别的数据使用! varchar类型:变长字符串,varch

shuang_com的博客 3823

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Mysql 字符型char和varchar的区别

知识点:char(M) varchar(M),M代表能存储的最多字符数,1个英文和1个中文都代表一个字符 1、char是定长的,varchar是不定长(可变)的 example: char(10)和varchar(10)存储 “中国” 前者依旧会分配10个字符长度,后者只会分配2个字符长度 2、char比varchar更耗费空间 3、但是char比varchar存储性能高 所以:变化比较大的用v...

INJURE_CYJ的博客 873

CHAR 和 VARCHAR 的区别

CHAR:适用于存储固定长度的字符串,如国家代码、邮政编码、或固定格式的日期。其定长特性可能提高某些查询的性能,但可能导致存储空间的浪费。VARCHAR:适用于存储可变长度的字符串,如姓名、地址、描述性文本。它更节省空间,但在高频查询中,性能可能稍差。在选择使用CHAR还是VARCHAR时,应根据具体应用场景、数据的特点、以及存储与性能的平衡来做出决定。在需要存储长度变化较大的数据时,VARCHAR是更好的选择;而在存储长度固定的数据时,CHAR则更加合适。

Flying_Fish_roe的博客 1545

字节面试题:char和varchar的区别?

char 是一种固定长度的字符数据类型,在创建表时需要指定其长度,长度范围为 0 到 255 个字符。char 类型在存储时会按照指定的长度进行存储,如果实际字符长度小于指定长度,会使用空格填充。以上SQL代码创建了一个名为id和name。name列使用了CHAR(10)数据类型,表示它将存储最多10个字符的固定长度字符串。当向该表插入数据时,并且为name列赋值时,该值将以固定长度的10个字符存储。如果赋值的字符串长度小于10个字符,MySQL会使用空格填充以达到指定的长度。

jakelihua 1572

细说varchar与char有哪些区别?

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。

weixin_42179304的博客 1184

varchar 与 char 的区别?

摘要: 数据库中的CHAR和VARCHAR核心区别在于存储机制与空间效率。CHAR为定长类型,固定占用声明空间(不足补空格),适合存储固定长度数据(如MD5、邮编),读取性能高但可能浪费空间;VARCHAR为变长类型,仅存储实际数据+长度前缀,节约空间且适合长度多变字段(如用户名、地址),但读取需解析长度稍慢。选择建议:长度严格固定用CHAR,长度变化大或需省空间用VARCHAR,注意CHAR会截断尾部空格。(149字)

csdn_tom_168的博客 841

MySQL中VARCHAR最大长度是多少?CHAR和VARCHAR有哪些区别?

VARCHAR的最大长度、字符串类型选择,用MySQL的人中十之七八是不清楚的。网上文章鱼目混珠,以讹传讹居多。 本文不止介绍了原理,还提供了案例手把手教你自己分析,彻底解决你的疑惑

reading-conference-writing 2万+

char和varchar的优缺点,生产如何选择?

char(11) :***定长***的字符串类型,在存储字符串时,最大字符长度11个, 立即分配11个字符长度的存储空间,如果存不满,***空格***填充。 varchar(11):***变******长***的字符串类型看,最大字符长度11个。 在存储字符串时,自动判断字符长度,***按需***分配存储空间。 优缺点: 1. char类型存储时,相比varchar类型存储效率更高, 不需要判断字符长度,直接分配磁盘空间 2.varchar类型,相比char类型,按需分配空间。 选择? 1. 从原则上..

qq_42905448的博客 3107

MySQL数据库char与varchar区别

① VARCHAR与CHAR字符型数据的差异字符串数据类型 MySQL数据类型 含义 char(n) 固定长度,最多255个字符 varchar(n) 可变长度,最多65535个字符 tinytext 可变长度,最多255个字符

Gane_Cheng的博客 1万+

char 和 varchar 有什么区别

如果使用char(100),则插入记录后就分配了100个字节,后续修改不会造成页分裂的问题,而varchar(100)由于没有提前分配存储空间,因为表中数据刚开始插入时,可变长度字段值都是根据实际长度存储下来的,且行与行之间数据也是紧密连续存放在文件地址中的。,存储产品描述(可变长度)、存储用户地址(可变长度)、存储用户名称(可变长度),这些都适合用varchar。,存储身份证号(固定长度)、存储订单号(固定长度)、存储国家编码(固定长度),这些都适合用char。char的长度范围是0-255,

m0_73473352的博客 967

char 和 varchar

char   和   varchar 固定长度   (char)   或可变长度   (varchar)   字符数据类型。 char[(n)] 长度为   n   个字节的固定长度且非   Unicode   的字符数据。n   必须是一个介于   1   和   8,000   之间的数值。存储大小为   n   个字节。char   在   SQL-92   中的同义词为   charact

xiaoyiily的专栏 366
上一篇: #万答10:mysqldump 是如何实现一致性备份的
下一篇: 技术分享 | innodb_buffer_pool_size为什么无法调低至1GB以内
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值