首页 数据库 mysql教程 MySQL中VARCHAR和CHAR格式数据的区别

MySQL中VARCHAR和CHAR格式数据的区别

Jun 07, 2016 pm 02:58 PM
char m varchar

CHAR与VARCHAR类型类似,但它们保存和检索的方式不同。CHAR有固定的长度,而VARCHAR属于可变长的字符类型。它们最大长度和是否尾

区别

CHAR与VARCHAR类型类似,但它们保存和检索的方式不同。CHAR有固定的长度,而VARCHAR属于可变长的字符类型。它们最大长度和是否尾部空格被保留等方面也不同。在存储和检索过程中不进行大小写转换。

下面的表格显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:

值 CHAR(4) 存储需求 VARCHAR(4) 存储需求

'' ' ' 4个字节 '' 1个字节

'ab' 'ab ' 4个字节 'ab' 3个字节

'abcd' 'abcd' 4个字节 'abcd' 5个字节

'abcdefgh' 'abcd' 4个字节 'abcd' 5个字节

从上面可以看得出来CHAR的长度是固定的,不管你存储的数据是多少他都会都固定的长度。而VARCHAR则处可变长度但他要在总长度上加1字节,这个用来存储字符长度(如果声明的长度超过255,,则使用2个字节)。所以实际应用中用户可以根据自己的数据类型来做。

请注意,上表中最后一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度的值不被保存,并且会出现错误。

从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索时从CHAR列删除了尾部的空格。通过下面的例子说明差别:

mysql> CREATE TABLE test(a VARCHAR(4), b CHAR(4));
mysql> INSERT INTO test VALUES ('ab ', 'ab ');
mysql> SELECT CONCAT(a, '+'), CONCAT(b, '+') FROM test;

结果如下:

CONCAT(a, '+') CONCAT(b, '+')

ab + ab+

从上面可以看出来,由于某种原因CHAR有固定长度,所以在处理速度上要比VARCHAR快很多,但是相对浪费存储空间,所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之可以用VARCHAR类型来实现。
建议

MyISAM存储引擎 建议使用固定长度,数据列代替可变长度的数据列
INNODB 存储引擎 建议使用VARCHAR类型

MySQL InnoDB存储引擎锁机制实验

InnoDB存储引擎的启动、关闭与恢复

MySQL InnoDB独立表空间的配置

MySQL Server 层和 InnoDB 引擎层 体系结构图

InnoDB 死锁案例解析

MySQL Innodb独立表空间的配置

本文永久更新链接地址

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

AITO旗下问界M9全景智慧旗舰SUV即将登场 AITO旗下问界M9全景智慧旗舰SUV即将登场 Sep 26, 2023 pm 02:41 PM

9月25日消息,华为商城开始接受AITO旗下问界M9汽车的预订。这款车被定位为全景智慧旗舰SUV,具备引人注目的特点。消费者只需支付5000元的意向金,即可抵扣高达10000元的尾款新车将提供两个版本,分别是增程版和纯电版。预计售价在50万元到60万元之间,使得它在高端SUV市场上具有竞争力。预计问界M9将在2023年第四季度正式上市,目前还没有公开其具体配置的信息据了解,M9车型采用了家族化的设计语言。从官方发布的两张图片来看,车辆的侧面线条流畅,并且车门把手采用了隐藏式设计,给整车增添了科技

mysql中varchar类型如何实现日期进行比较、排序等操作 mysql中varchar类型如何实现日期进行比较、排序等操作 May 31, 2023 pm 01:49 PM

在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,但有时会因为特殊的需求或历史原因,日期的存储格式是varchar,那么我们该如何处理这个varchar格式的日期数据呢?使用函数:STR_TO_DATE(str,format)STR_TO_DATE(str,format)函数是DATE_FORMAT()函数的反函数。它需要一个字符串str和一个格式字符串格式。STR_TO_DATE()返回一个DATETIME值,如果格式字符串包含日期和时间部分,或如果字

mysql中char和varchar有什么区别 mysql中char和varchar有什么区别 Sep 04, 2023 pm 02:16 PM

mysql中char和varchar的区别有:1、CHAR是固定长度的,而VARCHAR是可变长度的;2、CHAR存储和检索效率高,而VARCHAR存储和检索效率不高;3、CHAR占用存储空间,而VARCHAR可以节省存储空间。

C语言中的关键字:go是其中之一吗? C语言中的关键字:go是其中之一吗? Mar 15, 2024 am 11:15 AM

C语言中的关键字:go是其中之一吗?在学习C语言的过程中,我们不可避免地会碰到各种关键字,这些关键字在程序设计中扮演着重要的角色。而对于初学者来说,有时候会产生一些疑惑,比如有人可能会问,C语言中是否有关键字“go”呢?接下来,让我们一起来探究一下这个问题。首先,我们需要明确一点,C语言是一种非常经典的编程语言,它的关键字是早已确定的,不会轻易改变。在C语言

数字虚拟货币是什么?数字虚拟货币在哪里购买? 数字虚拟货币是什么?数字虚拟货币在哪里购买? Feb 14, 2025 pm 05:06 PM

数字虚拟货币,也被称为加密货币或虚拟货币,是一种去中心化的数字货币。不同于传统货币,数字虚拟货币不受中央银行或政府控制,而是通过互联网上的计算机网络进行交易。数字虚拟货币的安全性由复杂的密码术算法保障,使其具有不可伪造、匿名性和全球流通等特点。随着数字虚拟货币的普及,购买渠道也在不断增多。

CentOS7部署cicd服务之Jenkins CentOS7部署cicd服务之Jenkins Feb 20, 2024 am 08:30 AM

项目地址https://www.jenkins.io/zh/设置主机名:hostnamectlset-hostnamejenkins不带时间的个性主机名echo"PS1='[e[37;1m][[e[36;40m][e[32;40m]u[e[33;40m]@[e[31;40m]h[e[34;40m]w[e[37;1m]]\$[e[m]'">>.bashrc关闭CentOS7自带的防火墙服务systemctldisablefirewalld&&systemctlstopfirewa

华为智能汽车问界M7:九月全新亮相,驾乘体验质的提升! 华为智能汽车问界M7:九月全新亮相,驾乘体验质的提升! Aug 22, 2023 am 09:13 AM

华为高管余承东今日在个人微博上透露了关于华为全新智能汽车问界M7的一些令人期待的消息,预计这款新车将于9月正式发布,为消费者带来全新的驾乘体验根据了解,余承东在微博中表示,华为问界M7在驾驶和乘坐体验方面取得了巨大的进步。无论是驾驶还是乘坐,都能明显感受到提升。车辆的视野和性能经过了极大的优化,非常适合家庭进行长途旅行。他还提到,为了创造更加舒适的乘坐体验,华为投入了大量的精力进行全新的内外饰设计。新座椅更加柔软舒适,包裹性也更强,让乘客在旅途中能够得到更好的休息据余承东透露,华为对于华为智能汽

MySQL怎么确定VARCHAR的大小 MySQL怎么确定VARCHAR的大小 May 27, 2023 pm 09:20 PM

首先不建议使用TEXT类型的,因为使用TEXT会严重影响效率,最好的方式就是使用VARCHAR并确定字段的最大长度。我们可以先在表里定义一个字段rule_value,并设置长度为255,然后输入最小的json字符串进去:使用MySQL的CHAR_LENGTH函数,计算rule_value的大小:SELECTid,rule_type,rule_value,CHAR_LENGTH(rule_value)asrule_value_length,rule_markFROMtest_tableWHEREr

See all articles