精华内容
下载资源
问答
  • char和varchar

    2020-04-13 09:39:29
    char和varchar 在MYSQL中,char是指:使用指定长度的固定长度表示字符串的一种字段类型;比如char(8),则数据库会使用固定的1个字节(八位)来存储数据,不足8位的字符串在其后补空字符。 varchar(M)是一种比char...

                                           char和varchar

    在MYSQL中,char是指:使用指定长度的固定长度表示字符串的一种字段类型;比如char(8),则数据库会使用固定的1个字节(八位)来存储数据,不足8位的字符串在其后补空字符。


    varchar(M)是一种比char更加灵活的数据类型,同样用于表示字符数据,但是varchar可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。因此,对于那些难以估计确切长度的数据对象来说,使用varchar数据类型更加明智。MySQL4.1以前,varchar数据类型所支持的最大长度255,5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符(不为空)

     

     

    char:定长,效率高,一般用于固定长度的表单提交数据存储;例如:身份证号,手机号,电话,密码等。

    varchar:不定长,效率偏低。

     

    1  char的存储方式是:英文字符占1个字节,汉字占用2个字节;varchar的存储方式是:英文和汉字都占用2个字节,两者的存储数据都非unicode的字符数据。

     

    2 存储时,前者不管实际存储数据的长度,直接规定CHAR规定的长度分配存储空间;而后者会根据实际存储的数据分配最终的存储空间。通常情况下,varchar能够节约磁盘空间,为此往往认为其能够提升数据库的性能。但必须注意的是,在提升性能的同时也会有些副作用。如在更改前其字符长度为10,此时系统为其分配10个存储单元,更改后长度变为20,原先存储的位置无法满足其存储的需求,就需要一些额外的操作,根据存储引擎的不同,有的会采用拆分机制,有的采用分页机制。

    eg.定义char(10)和varchar(10),存入"test",char所占存储长度为10,除了字符"test"外后面跟着6个空格,而varchar直接存4个长度;读取数据时,char用trim()去掉多余的空格,varchar直接读出数据。

     

    参考文献

    https://zhuanlan.zhihu.com/p/63005458

    在这里插入图片描述

    展开全文
  • char和varchar的区别:1、占据空间不同:char的长度是不可变的,而varchar的长度是可变的;2、存取速度不同:char的存取数度比varchar要快得多,因为其长度固定,方便程序的存储与查找;3、存储方式不同:char的存储...

    3e66a5a7908036ed36dfdd93945b284b.png

    char类型适用场景对存取速度要求高,或者占据空间一致的场景;

    char和varchar的区别:

    1、占据空间不同:char的长度是不可变的,而varchar的长度是可变的;

    2、存取速度不同:char的存取数度比varchar要快得多,因为其长度固定,方便程序的存储与查找;

    3、存储方式不同:char的存储方式是对英文字符占用1个字节,对汉字占用两个字节,而varchar的存储方式是对每个英文字符占用2个字节,汉字也占用2个字节;

    扩展资料

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

    2、char和varchar的存储数据都非unicode的字符数据。

    -

    下面是更多关于varchar的问答

    区别:

    1.CHAR的长度是固定VARCHAR2的长度是可以变化的, 比如,存符串“abc",CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。

    2.CHAR的效率比VARCHAR2的效率稍高。

    3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

    何时该用CHAR,何时该用varchar2?

    CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.

    VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

    VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

    Char(n)是长度为n个字节的定长unicode的字符数据N为一个介于1到8000之间的值存储大小为输入数据的实际字度,而不是n个字节。

    如果输入的实际字节长度少于n,那么其他位置会被空格填充。在数据存储中英文字母和数字占一个字节,汉字占两个字节。那么char(n)最多可以存储n个英文字母或数字,或者n/2个汉字。 Varchar(n)是长度为n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于1 和8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。注意它和char(n)的区别是char(n)是定长的,varchar(n)是变长的。

    如果输入的字符的实际字节长度少于n,那么它的长度就是实际输入的字节长度。在数据存储中英文字母和数字占一个字节,汉字占两个字节。

    Varchar(n)最多可以存储n个英文字母或数字,或者n/2个汉字。

    Char(n)最多可以存储n个英文字母或数字,或者n个汉字。

    在数据检索中,一般来说char型字段的数据是最快的,varchar,nvarchar型字段其次。 在所存数据长度不一的情况下,varcahr型字段所占空间最少,char,nvarchar其次。

    那么到底在什么样的情况下使用什么样的数据类型那?

    如果所存数据长度基本一致,建议使用char型。这样检索速度快,但是提取的时候要注意用trim()函数剔除所存数据两边的空格。 如果所存数据长度差异较大,可以使用varchar或者nvarchar。如果想较好的支持多语言的话,最好使用nvarchar。使用nvarchar可以减少字符转换问题,防止某些情况下乱码的出现。

    Char(n) Varchar(n) Nvarchar(n)

    N 最大值 8000 8000 4000

    数据长度 固定(不足空格填充) 可变(实际数据长度) 可变(实际数据长度)

    可存储最多英文(数字) 8000 8000 4000

    最多汉字数 4000 4000 4000

    英文(数字)所占字节 1 1 2

    汉字所占字节 2 2 2

    检索速度 快 慢 慢

    char有固定的长度,而varchar属于可变长的字符类型。

    区别:

    1.CHAR的长度是固定的,而VARCHAR2的长度是变化的, 比如,存储字“abc",对于CHAR (20),表示你存储的字占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。

    2.CHAR的效率比VARCHAR2的效率稍高。

    3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

    何时该用CHAR,何时该用varchar2?

    CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.

    VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

    VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

    mysql中char与varchar的区别

    1.都是用来存储字符串的,他们的保存方式不一样。

    2.char定的长度,而varchar属于可变长的字符类型。

    char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

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

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

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

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

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

    本回答被网友采纳

    1.CHAR的是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符abc",对于CHAR (10),表示你存字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。

    2.CHAR的效率比VARCHAR2的效率稍高。

    3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

    何时该用CHAR,何时该用varchar2?

    CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.

    VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。

    VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

    char是定长,varchar是变长

    转载:文章来自用户投稿不代表本站观点,如有侵权请联系我们。

    展开全文
  • char varchar

    2018-08-26 17:35:00
    varchar(5),存几个是几个,不补 而当你用"select_leng(字段)from 表" 的时候,char会忽略掉字符后的空格,无论是你自己在加入数据时输入在字符后的空格还是储存机制补足的空格,char都不会统计 所以当你存的时候...

    char(5),存储的时候固定5位,不足5位补足5位

    varchar(5),存几个是几个,不补

    而当你用"select_leng(字段)from 表" 的时候,char会忽略掉字符后的空格,无论是你自己在加入数据时输入在字符后的空格还是储存机制补足的空格,char都不会统计

    所以当你存的时候insert t1(name) values("alex ")时,select_leng只会算出4个,且你用where name="alex"也能匹配上

    要求select_leng献出char的原形,可以用 SET sql_model="PAD_CHAR_TO_FULL_LENGTH";

     

    varchar在存的时候会在头一位用一个byte表示要存数据的长度,取得时候也要先计算要取多少位

    所以导致存取速度比较慢,而对比此char直接取你定义的位数,要比varchar快点

    转载于:https://www.cnblogs.com/FlFtFw/p/9537982.html

    展开全文
  • CHAR和VARCHAR

    2015-11-10 14:02:59
    使用CHAR一方面在数据库检索起来速度更快,同时在使用COBOL程序在逻辑上处理CHAR字符串生成的变量的时候,也相对简单,只要直接给变量赋值就可以了,这样子也便于程序的处理。而如果使用使用那个VARCHAR的话,数据...

            使用CHAR一方面在数据库检索起来速度更快,同时在使用COBOL程序在逻辑上处理CHAR字符串生成的变量的时候,也相对简单,只要直接给变量赋值就可以了,这样子也便于程序的处理。而如果使用使用那个VARCHAR的话,数据检索效率相对低,而在COBOL中需要首先给字符串的长度赋值,然后在给它的内容赋值。这样子加大了程序的逻辑处理过程。还带来了一定的风险,比如赋值的时候,如果赋值的长度超过了最大的值,就会使得程序执行的时候出现意想不到的后果。使用CHAR类型,很容易浪费存储空间,因为如果使用CHAR,无论存储的字符串内容的长度是多长,都会使用它固定长度去存储它。而使用VARCHAR则可以根据它实际的字符串长度去存储数据。这个是VARCHAR类型最大的特点,也是它到现在在数据库技术中还能存在的根本原因。

    1,如果希望列中的数据值大小接近一致,请使用char;如果希望列中的数据值大小显著不同,请使用varchar。  


    2,事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利

    3,当数据的长度相差较大时,使用char会浪费很多的空间,而使用varchar可以节约大量的空间,对于数据量比较大的情况,更能体现出两者的差异。当数据长度比较固定(相差较小或固定不变)时,两者的差别就不太大。

    4,在查询时(作为查询条件),由于存储方式上的不同,导致char字段的查询速度要好于varchar字段,特别是对于在极大量的数据中查询。 

       实际开发中,一般对于较长的字符串(一半大于20个字符时)就是应该使用VARCHAR类型。
    展开全文
  • CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varchar(30)表示都可以存30个字符。有一点要注意的是在...
  • char和varchar类型相似,但是它们的存储和检索方式不同。在MySQL5.0.3,它们在最大长度和是否保留尾部空格也不相同。char和varchar定义了字符串的最大长度。例如,char(30)可以放30个字符。char列的长度在你建表的...
  • MySQL数据库的字符(串)类不要以为字符类型就是CHAR,CHAR和VARCHAR的区别在于CHAR是固定长度,只要你定义一个字段是CHAR(10),那么不论你存储的数据是否达到了10个字节,它都要占去10个字节的空间;而VARCHAR则是可变...
  • char varchar

    2010-05-26 18:31:00
    char varchar 固定长度 (char) 或可变长度 (varchar) 字符数据类型。 char[(n)] 长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL...
  • char varchar 的区别固定长度 (char) 或可变长度 (varchar) 字符数据类型。char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 8,000 之间的数值。存储大小为 n 个字节。char 在...
  • 浅析Oracle中char和varchar2的区别 电脑资料 char是定长的 char10) varchar2(10) 同样存 a char占用了10个字符varchar2 只占用了 一个字符一个中文占两个字符英文占一个 但是char的查询速度要比varchar2快varchar2...
  • CHAR和VARCHAR类型很相似,但是它们的存储和检索方式不同。它们在最大长度和是否保留尾随空格方面也存在差异。 CHAR和VARCHAR类型声明的长度表示希望存储的最大字符数。例如,CHAR(30)最多可以容纳30个字符。 CHAR列...
  • CHAR VARCHAR 的区别? 以下是 CHAR VARCHAR 的区别: CHAR VARCHAR 类型在存储检索方面有所不同 CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR 值被存储时,它们被用空格填充到...
  • char和varchar和varchar的区别

    千次阅读 2016-09-20 17:30:51
    char和varchar 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10...
  • 前述VARCHAR和CHAR是两种最主要的字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是InnoDB/或者MyISAM。如果使用的不是这...
  • 在MySQL 中char varchar 都是存储字符串的,区别在于char有固定的长度,而varchar属于可变长的字符类型。char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,mysql就会在它的右边用空格字符补足....
  • 字符与字节的区别一个字符由于所使用的字符集的不同,会并存储在一个或多个字节中,所以一个字符占用多少个字节取决于所使用的字符集注意:charvarchar后面接的数据大小为存储的字符数,而不是字节数charvarchar...
  • 一、演变: MySQL数据库的varchar类型在5.0.3以下的版本中的最大长度限制为255,其数据范围可以是0~255。 在MySQL5.0.3及以上的版本中,varchar数据... 二、详解(MySQL5.1): CHAR和VARCHAR类型类似,但它们保存和检索
  • char varchar 的差别

    2019-01-14 10:09:48
    char varchar 的差别char varcharchar varchar: 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此。 2.char(n) ...
  • 在 MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位结束位占去了3个字 节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放...
  • 以下是对Oracle中char和varchar2的区别进行了分析介绍,需要的朋友可以过来参考下
  • VARCHAR和CHAR是两种最主要的字符串类型。它们的存储方式数据检索方式都不一样。VARCHAR和CHAR的数据检索效率:CHAR > VARCHARVARCHAR类型VARCHAR类型用于存储可变长字符串,是最常见的字符串数据类型。它比定...
  • CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。CHAR和VARCHAR相同的是:CHAR和VARCHAR都指定了字符长度,注意是字符长度。例如char(30) 和 varchar(30)表示都可以存30个字符。有一点要注意的是在...
  • CHAR和VARCHAR区别

    千次阅读 2018-11-18 15:03:14
    //CHAR和VARCHAR区别  1)Char固定长度 ;  2)Varchar可变长度 ;  3)Char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度 低版本会被截取 高版本会报错;  4)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,817
精华内容 3,126
关键字:

char和varchar