你真的会选数据类型吗?Plots、Charts、Graphs的区别?

在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型。

char与varchar的区别

char (15)长度固定, 如’www.javazx.com’ 存储需要空间 14个字符

varchar(15) 可变长 如’www.javazx.com’ 需要存储空间 15字符,

小识备注

char(10) 如果你存abc,需要空间为10,3个存abc,7个存空字符,因为char是固定长度

varchar(10)如果你存abc,需要空间为4,3个存abc,1个存长度,varchar是可变长度

超过10的部分,都会被截断

从上面可以看得出来char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。所以实际应用中用户可以根据自己的数据类型来做。

再看看char,与varchar在速度上的区别吧。

代码如下:

mysal>create tabe ab(v varchar(4),c char(4));

query ok ,0 rows affected(0.02 sec)

mysql>insert into abc values(‘ab ‘,’ab ‘)

query ok ,1 row affected(0.00 sec);

mysql->select concat(v ,’+’) ,concat(c ,’+’) form abc

ab + | ab+

1rows in set (0.00 sec)

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

注明:

在用char字符类型时内容后面有空间时必须作相关处理,要不就会把空格自动删除。

建意:

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

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

innodb 存储引擎 建意使用varchar 类型

以下是其它网友的补充

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

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

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

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

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

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

例外:长度小于4个字符的char数据列不会被转换为varchar类型

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

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

文章2:

字符应该是最常见的一种了,但似乎各个数据库都有所不同,比如oracle中就有啥varchar2之类。不过mysql似乎最多的还是集中在char和varchar上。

说说区别。char是固定长度的,而varchar会根据具体的长度来使用存储空间。比如char(255)和varchar(255),在存储字符串”hello world”的时候,char会用一块255的空间放那个11个字符,而varchar就不会用255个,他先计算长度后只用11个再加上计算的到字符串长度信息,一般1-2个byte来,这样varchar在存储不确定长度的时候会大大减少存储空间。

如此看来varchar比char聪明多了,那char有用武之地吗?还是很不少优势的。

一,存储很短的信息,比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占个byte用于存储信息长度,本来打算节约存储的现在得不偿失。

二,固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而且还要占个长度信息。

三,十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有很多的精力用于计算,而这些对于char来说是不需要的。

还有一个关于varchar的问题是,varchar他既然可以自动适应存储空间,那我varchar(8)和varchar(255)存储应该都是一样的,那每次表设计的时候往大的方向去好了,免得以后不够用麻烦。这个思路对吗?答案是否定的。mysql会把表信息放到内存中(查询第一次后,就缓存住了,linux下很明显,但windows下似乎没有,不知道为啥),这时内存的申请是按照固定长度来的,如果varchar很大就会有问题。所以还是应该按需索取。

总结:仔细看DZ的数据表,定长的字段基本还都是用char….

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 86345@qq.com 举报,一经查实,本站将立刻删除。
(0)
上一篇 2024-09-01 10:52:55
下一篇 2024-09-01 10:55:47

猜你喜欢

  • 应急电源怎么选,应急电源的分类及选择

    应急电源的分类及选择 为了保证重要建筑、设施、负荷等的供电,需设置应急电源,本文简要叙述了应急电源的种类、功能特点、选择及应急电源系统等。 应急电源的种类 电力系统的应急电源,是当…

    2023-08-12
  • 自动保存间隔时间怎么设置(设置excel自动保存时间)

    我相信很多童鞋都患上了一种病,叫做“不保持十分钟以上就没有安全感”。其实不用那么担心!单击文件并选择选项。在保存选项中,设置保存自动恢复信息的时间间隔,选择“如果我不保存,请关闭它…

    投稿 2022-04-10
  • 如何长头发多_如何让头发又密又厚

    想要变身氛围美女,没有一头浓密的头发怎么能行,当氛围感成为一个时尚的代名词,很多人都在为自己的发量担忧。随着年龄的增长,脱发掉发似乎成为一种常态,更多人面对着头发稀疏的烦恼。那么头…

    2022-08-03
  • 禁渔期可不可以捕捞贝类,禁渔期哪些海鲜不能卖的

    禁渔期可不可以捕捞贝类 禁渔期是不能捕捞贝类的。 在极个别地区可以进行赶海的,但是如果是生产性赶海的话肯定是违法的。关于禁渔区、禁渔期的规定进行捕捞的,没收渔获物和违法所得,处5万…

    2023-10-01
  • 小鸡出壳多久可以喂食_孵化小鸡出壳的禁忌

    鸡的孵化包括自然孵化和人工孵化。鸡的孵化期在21天左右,产蛋18天,产蛋7天,一般在常温下,可能导致孵化提前或推迟。 自然孵化,有母鸡孵蛋,可以省却人工,并且提供适宜的温度和湿度,…

    2022-08-20
  • 星巴克的咖啡好喝吗_星巴克咖啡有哪些种类

    今天整理了一下我日常的点单攻略,喜欢喝星爸爸的姐妹赶紧码住。 日常基础款:拿铁、馥芮白、冷萃、冰美式 季节款:太妃榛果拿铁(冬天),比利时黑巧克慕斯星冰乐(夏天) 星冰乐系列 (可…

    2023-04-08
  • 带鱼用什么火煎_生煎带鱼的家常做法窍门

    用料 带鱼段 500克 盐 少许 料酒 2勺 玉米油(煎鱼) 适量 葱花 少许 做法步骤 1、带鱼洗净,剪断,加盐,酒,腌半小时,晾干。 2、起油锅。 3、均匀放入带鱼,中火煎。 …

    2022-06-08
  • 莲蓬怎么吃_莲蓬的正确吃法

    每年七八月份 ,新鲜的莲子大量上市 ,路边超市随处可见 ,更多人喜欢吃鲜嫩的莲子 ,因为具有着清热去火的作用 ,尤其炎炎夏季很多人容易上火,吃一些莲子非常不错 , 莲子是长在莲蓬里…

    2022-05-25
  • 9月25号房贷降息是真的吗2023,9月25号房贷降息能降多少钱

    9月25号房贷降息新闻的确是真的,目前,工农中建四大行已经发布了相关资讯,如果您符合资质,也就是首套房的业主,是可以找银行主动申请房贷降息的,具体能降多少还得看每家银行的政策。 9…

    2023-09-18
  • 中国哪个姓氏状元最多,状元最多的姓

    从首名状元诞生到科举被废除,在这近1300多年里,目前实际可考证的状元数量有600多位。我们统计得出前十名的姓氏分别顺序是王,李,张,刘,陈,杨,郑,赵,孙,崔。 其中王姓状元人数…

    投稿 2023-12-08

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注