char和varchar的区别

在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下两者的区别。

首先明确的是,char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。

尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。

再者,char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节。

两者的存储数据都非unicode的字符数据。

-----------------------------------------------------

转载自http://blog.csdn.net/playboyanta123/article/details/8472222

原文地址:https://www.cnblogs.com/xuxinstyle/p/9800920.html

时间: 2024-10-12 06:36:14

char和varchar的区别的相关文章

MYSQL, char 与 varchar的区别!

一.char 和 varchar 的区别: 1)取值范围: char:取值范围:0~255 varchar:取值范围:0~65535 2)空间占用与速度: char: 定长字符串,占用空间大,速度快,一般用于固定长度的表单提交数据存储,例如:身份账号.电话号码.密码等 varchar:变长字符串,占用空间小,速度慢 3)存储与检索数据: char:存储的数据是否达到了给定值得字节,都要占用给定值大小的空间,不足的自动用空格填充,在检索时后面的空格会被自动去裁剪掉. 如:定义  tel char(

mysql中char与varchar的区别分析

原文网址:http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者: 字体:[增加 减小] 类型:转载 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型. char与varchar的区别 char (13)长度固定, 如'www.jb51.net' 存储需要空间 12个字符 varchar(13) 可变长 如'w

char、varchar的区别

char的长度是固定的,varchar的长度是可变的. 例如:char(5)  varchar(5) 当输入char数据时:字符.数字.汉字都是5个,只能输入5个 当输入varchar数据时:字符.数字.汉字也是5个,也只能输入5个 从表面上看char和varchar没什么区别 实际上当char输入1个(字符.数字.汉字)时,5个空间会被占满 而varchar输入1个(字符.数字.汉字)时,只会占一个空间, 之所以说(varchar)变长计算速度慢,是因为变长需要计算字符串长度,而char是不需

通过char与varchar的区别,学习可变长的字符类型

转自http://www.uphtm.com/database/232.html 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型. char与varchar的区别 char (16)长度固定, 如'www.uphtm.com' 存储需要空间 14个字符 varchar(16) 可变长 如'www.uphtm.com' 需要存储空间 15字符, 从上面可以看得出来char 长度是固定

char与varchar的区别

char的长度是不可变的,而varchar的长度是可变的,也就是说, 定义一个char[10]和varchar[10],如果存进去的是'csdn', 那么char所占的长度依然为10, 除了字符'csdn'外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候, char类型的要用trim()去掉多余的空格,而varchar是不需要的. 1.char与varchar的区别 char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找: 但是char也为此

【面试虐菜】—— Oracle中CHAR、VARCHAR的区别

1.CHAR. CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR. 存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么“+1”呢?这一个字节用于保

详解char和varchar的区别

MySQL中的字符串有两个常用的类型:char和varchar,二者各有优势,下面我们来详细分析一下. 1.char(n)类型 char类型时定长的类型,即当定义的是char(10),输入的是"abc"这三个字符时,它们占的空间一样是10个字节,包括7个空字节.当输入的字符长度超过指定的数时,char会截取超出的字符.而且,当存储char值时,MySQL是自动删除输入字符串末尾的空格. char是适合存储很短的.一般固定长度的字符串.例如,char非常适合存储密码的MD5值,因为这是一

MYSQL中char 与 varchar 的区别

char (13)长度固定,只要最大长度不超过13,其所占存储空间就不会改变,始终是13,不足则用空字符补充. ps:所需存储空间也是由数据库一次性分配,所以在速度上要比varchar快,且不存在碎片的困扰,但由于长度固定也越容易造成存储空间的浪费,所以一般用来存储固定长度的内容.如:MD5哈希值 varchar(13) 可变长, 在不超过最大长度的情况下,其存储空间会根据存储内容的大小来改变. ps:varchar会多用以个字节来存储长度信息,当其更改前后数据的长度时,数据库就需要进行额外的操

数据库 char nchar varchar nvarchar 区别

char:对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间.因为是固定长度,所以速度效率高. Varchar类型::变长型字符数据类型,存储最长长度为8,000 个字符.Varchar的类型不以空格填满,比如varchar(100),但它的值只是"haha",则它的值就是"haha".而char 不一样,