我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql中varchar与char的区别有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql中varchar与char的区别有哪些

这篇文章给大家分享的是有关Mysql中varchar与char的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

mysql中varchar与char的区别以及varchar(30)中的30代表的涵义

       (1)varchar与char的区别

varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);

char存储定长(right padding),读取时会截断末尾空格,长度最大为255字符;

char 与varchar都是用来存储字符串的,只是他们的保存方式不一样,char有固定的长度,而varchar属于可变长的字符类型。

char是一种固定长度的类型,varchar则是一种可变长度的类型。

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足。(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。

建议:

myisam存储引擎建议使用固定长度,数据列代替可变长度的数据列。

memory存储引擎目前都使用固定数据行存储,因此无论使用char,varchar列都没有关系。

Innodb存储引擎建议使用varchar类型。

在MySQL中用来判断是否需要进行对数据列类型转换的规则:

1. 在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的。

2. 只要数据表里有一个数据列的长度是可变的,那么各数据行的长度都是可变的。

3. 如果某个数据表里的数据行的长度是可变的,那么为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型。

     对于MyISAM表,尽量使用char,对于那些经常需要修改而容易形成碎片的myisam和isam数据表就更是如此,它的缺点就是占用磁盘空间;

     对于InnoDB表,因为它的数据行内部存储格式对固定长度的数据行和可变长度的数据行不加区分(所有数据行共用一个表头部分,这个表头部分存放着指向各个有关数据列的指针),所以使用char类型不见得会比使用varchar类型好。事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利。

       (2)varchar(30)中30的涵义

     最大存储30个字符;varchar(5)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col 采用fixed_length计算col长度(memory)引擎一样。

     For example, a varchar(255) column can hold a string with a maximum length of 255 characters(字符而非字节),对于latin1, ‘abcd’的L为4,存储需要5个字节;对于ucs2(双字节字符),则需要10个字节存储(最大长度为510>255,故需要额外2个字节)

       (3)int(20)中20的涵义

     20表示最大显示宽度为20,但仍占4个字节存储,存储范围不变;

create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a));

create table int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a));

select * from int_test;
+------------+
| a          |
+------------+
| 0000000001 |
| 0000000002 |
| 0000000003 |
| 2147483648 |
+------------+

select * from int_test_4;
+------------+
| a          |
+------------+
|       0001 |
|       0002 |
|       0003 |
| 2147483648 |
+------------+

       (4)为什么MySQL这样设计?

    对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和结算均一样。

感谢各位的阅读!关于“Mysql中varchar与char的区别有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mysql中varchar与char的区别有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中varchar和char区别

mysql中的varchar和char数据类型之间存在以下区别:存储空间:varchar可变长,char固定长。性能:varchar检索和更新更快,char排序和查找更快。使用场景:varchar适合长度可变的字符串,char适合长度固定、
mysql中varchar和char区别
2024-05-01

详解数据库varchar与char有哪些区别

目录一、CHAR和VARCHAR有哪些区别1、固定长度 & 可变长度2、存储方式3、存储容量 CHAR二、CHAR和VARCHAR在SQL中需要注意的点三、类似的二进制类型:VARBINARYCHAR和VARCHAR是mysql中两种最重要
详解数据库varchar与char有哪些区别
2023-10-28

MYSQL中 char 和 varchar的区别

CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varchar(30)表示都可以存30个字符。有
2022-05-22

mysql中varchar和char的区别

mysql 中 varchar 和 char 数据类型的主要区别在于存储方式:char 以固定长度存储,而 varchar 根据实际字符串长度存储。char 适合长度固定的字符串,索引查找和比较操作更快,但存储空间浪费;varchar 适合
mysql中varchar和char的区别
2024-04-29

在mysql中char和varchar有什么区别

char和varchar是mysql中存储字符串的两种数据类型。char为固定长度,varchar为可变长度,且仅分配所需的最小存储空间。char字符串填充到指定长度,而varchar不填充。char基于固定长度比较,varchar基于实际
在mysql中char和varchar有什么区别
2024-04-26

MySQL中varchar和char类型有什么区别

本篇内容介绍了“MySQL中varchar和char类型有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!VARCHAR类型VARCH
2023-06-25

mysql innodb引擎中varchar和char的区别

一. 行记录格式innodb在存储数据的时候是以行的形式存储的,版本相关,并且有固定的格式。可以通过下面的语句查询当前所用版本的行记录格式:show table status like ‘表名‘;在版本5.6中默认使用格式是Compact,而在8.0中默认的格

	mysql innodb引擎中varchar和char的区别
2021-10-13

Mysql中tinyint与int的区别有哪些

这篇文章主要介绍了Mysql中tinyint与int的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题:int(1) 和 tinyint(1) 有什么区别呢?像这
2023-06-22

编程热搜

目录