MYSQL, char 与 varchar的区别!

一、char 和 varchar 的区别:

  1)取值范围:

    char:取值范围:0~255

    varchar:取值范围:0~65535

  2)空间占用与速度:

    char: 定长字符串,占用空间大,速度快,一般用于固定长度的表单提交数据存储,例如:身份账号、电话号码、密码等

    varchar:变长字符串,占用空间小,速度慢

  3)存储与检索数据:

    char:存储的数据是否达到了给定值得字节,都要占用给定值大小的空间,不足的自动用空格填充,在检索时后面的空格会被自动去裁剪掉。

       如:定义  tel char(8),实际存储值举例为 10086,占用了4个字节,则结论为:实际占用字节数还是8,不足的用空格填充。

    varchar:varchar的取值保存时只保存需要的字节数,另加一个字节来记录长度(如果列声明的长度超过255,则使用2个字节),varchar值保存时不进行填充,

         当值保存和检索时尾部的空格仍保留。

       如:定义  tel char(8),实际存储值举例为 10086,占用了4个字节,则结论为:实际占用字节数为4+1

  4)varchar的特殊点:

   4.1)存储限制

        varcahr字段是将实际内容单独存储在聚簇索引之外,内容开头用1或者2个自己来表示实际长度,因此最大长度不能超过65535

    4.2)编码长度限制   

     字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

     字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

二、char 和 varchar 和text三者之间的区别:

  1)存储和检索数据的方式都不一样,数据检索的效率:char>varchar>text

  2)char与varchar都可以有默认值,text不能指定默认值

三:注意点:

  1、如果数据库引擎为INNODB的话,建议用varchar来代替char

  2、从空间上来说适合使用varchar,从效率上来说适合用char,具体根据实际情况而定

  3、MySQL规定一个行的长度不能超过65535,否则会出现警告,建议切换使用text或blobs使用

时间: 2024-08-05 07:03:16

MYSQL, char 与 varchar的区别!的相关文章

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的区别,学习可变长的字符类型

转自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(5)  varchar(5) 当输入char数据时:字符.数字.汉字都是5个,只能输入5个 当输入varchar数据时:字符.数字.汉字也是5个,也只能输入5个 从表面上看char和varchar没什么区别 实际上当char输入1个(字符.数字.汉字)时,5个空间会被占满 而varchar输入1个(字符.数字.汉字)时,只会占一个空间, 之所以说(varchar)变长计算速度慢,是因为变长需要计算字符串长度,而char是不需

char与varchar的区别

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

mysql char与varchar区别

CHAR 和VARCHAR 类型类似,都用来存储字符串,但它们保存和检索的方式不同. CHAR属于固定长度的字符类型,而VARCHAR 属于可变长度的字符类型. mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));mysql> INSERT INTO vc VALUES ('ab ', 'ab ');mysql> SELECT CONCAT(v, '+'), CONCAT(c, '+') FROM vc;+----------------+-

【面试虐菜】—— 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值,因为这是一

char和varchar的区别

在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下两者的区别. 首先明确的是,char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,cha

MySQL char、varchar、text区别

原文链接:https://blog.csdn.net/brycegao321/article/details/78038272 https://blog.51cto.com/arthur376/2121160 1. char长度固定, 即每条数据占用等长字节空间:适合用在身份证号码.手机号码等定. 2. varchar可变长度,可以设置最大长度:适合用在长度可变的属性. 3. text不设置长度, 当不知道属性的最大长度时,适合用text. 按照查询速度: char最快, varchar次之,t