精华内容
下载资源
问答
  • CHAR和VARCHAR区别

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

     //CHAR和VARCHAR区别
         1)Char固定长度 ;
         2)Varchar可变长度 ;
         3)Char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度 低版本会被截取 高版本会报错;
         4)Varchar类型如果存入的数据的实际长度比指定的长度小 会缩短到实际长度 如果存入 数据的实际长度大于指定长度 低版本会被截取 高版本会报错;
         5)Char 会浪费更多的存储空间 而Varchar不会 ;
         6)Char效率会更高 Varchar 效率偏低 ;     
         7)Char和Varchar在指定时必须要制定后面的数字 

    展开全文
  • Char和varchar区别

    2012-03-10 01:45:41
    Char和varchar区别:char类型数据的所占的字节固定,数据中有空格会自动删除。Varchar是所占字节可变的类型,数据中遇到空格会保留。不论是char还是varchar当数据所占字节大于定义好的字节时都会截取多余的数据。...
     
    

    Mysql数据库

    Char和varchar区别:char类型数据的所占的字节固定,数据中有空格会自动删除。Varchar是所占字节可变的类型,数据中遇到空格会保留。不论是char还是varchar当数据所占字节大于定义好的字节时都会截取多余的数据。当值保存和检索时会在字符串尾部补一个空格,这是sql规范。具体例子如下:

    CHAR(4)

    存储需求

    VARCHAR(4)

    存储需求

    ''

    '    '

    4个字节

    ''

    1个字节

    'ab'

    'ab  '

    4个字节

    'ab'

    3个字节

    'abcd'

    'abcd'

    4个字节

    'abcd'

    5个字节

    'abcdefgh '

    'abcd'

    4个字节

    'abcd'

    5个字节

     

    Int、double和float是固定字节的数据类型,不需要指定大小。

    展开全文
  • char和varchar区别

    千次阅读 2018-04-03 14:39:01
    一 char和varchar有什么区别?1.char的长度是固定的,而varchar的长度是可以变化的。 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用...


    一  char和varchar有什么区别?

    1.char的长度是固定的,而varchar的长度是可以变化的。

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

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

    何时该用char,何时该用varchar2? 

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

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

    char插入空值是会占用存储空间的,而varchar和varchar2不会占用空间。varchar存储空,而varchar用null表示存储空。


    拓展一:oracle行链接和行迁移

    行链接:通常是指在初始插入一行数据,该行数据的大小大于oracle定义的block大小的时候。oracle将使用链接一个或多个保留的block存储这一行记录。

    行迁移:通常是指一行数据初始插入时候在存储在同一个block中,但是对改行数据进行修改导致原本存储的block没有足够的空间对改行数据进行存储,此时就会产生行迁移。此时oracle会将整行数据迁移到一个新的block中(假设block能够存储整行数据),oracle会原block中存储新block的指针,这就意味着行迁移之后的rowid是不会改变的。


    拓展二:数据库编码格式和存储所占空间的关系

    char,varchar,varchar2存储一个字符占一个字节,存放GBK编码的汉字存放2个字节,存放UTF-8编码的汉字占用3个字节;

    nchar,nvarchar,nvarchar2根据所选字符集来定义存放字符的占用字节数,一般都为2个字节存放一个字符(不管字符或者汉字)。


    拓展三:添加索引对insert,update,delete的性能影响

    前提:先创建好了索引

    insert时候会降低性能。因为在插入新的数据行之后,如果对原有索引序列产生影响,oracle会重新维护索引序列。

    update更新索引列的时候会降低性能,也需要重新维护索引;更新非索引列的时候,且where条件中根据索引列检索会提高(检索提高,更新基本不会影响);更新非索引列且where条件没有根据索引列进行数据检索,不会提高。

    delete删除记录时候如果where条件中根据索引列检索,删除时候会提高,否则不会提高性能。

    建议:先写入数据,再创建索引。如果先创建好了索引,在写入大量数据的时候可以先使索引失效,数据插入完成之后再启用索引。虽然失效索引和启用索引也会等待,但是跟大批量写入数据维护索引比较还是会提高性能。






    展开全文
  • char和varchar区别及踩坑 char与varchar2都是Oracle的数据存储格式。 char是定长的,varchar2是变长。都可以存储字符串。 同样存储一个字符“a” char:占用了10个字符(a占一个,另外9个使用空格占用) varchar2 只占用...

    char和varchar区别及踩坑
    char与varchar2都是Oracle的数据存储格式。
    char是定长的,varchar2是变长。都可以存储字符串。
    同样存储一个字符“a”
    char:占用了10个字符(a占一个,另外9个使用空格占用)
    varchar2 只占用了 一个字符(注意:一个中文占两个字符/三个字符,英文占一个)。
    一个中文占varchar2几个字节要根据Oracle中字符集编码决定:
    1.GBK,一个汉字占用两个字节;
    2.UTF8,一个汉字占用三个字节;

    在项目中就遇到一个坑,子查询返回的字段是char类型,与之相等的是varchar类型

    //A表中的name字段是char(10)
    //B表中name字段是varchar2(10)
    //子A表中的name值:a..........(点代表空格),而B表中查询出来的数据是:a
    //当你用A表中是的值和B表中的值作相等的时候,a.........=a 肯定是查不出数据的
    selelct * from A where name=(select name from b where id='..')
    

    怎么解决char和varchar之间的关系呢?
    使用trim:去空格

    //A表中的name的值变成:a B表中的也是a,这样就能查出数据了。
    selelct * from A where trim(name)=(select name from b where id='..')  
    

    去掉空格之后,就能解决char与vachar之间空格的坑了

    展开全文
  • MySQL中CHAR和VARCHAR区别

    2020-12-09 09:39:03
    以下都是基于mysql5.0以上版本而言,也就是char和varchar括号内指定的都是最大字符数,话不多说先上结论: 行为 char字段 varchar字段 最大长度 255字符 括号中最大的字符数通过编码来算,不超过行65535个...
  • char和varchar区别 char类型:对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,char存储定长数据很方便,char字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10...
  • mysql char和varchar区别

    2020-04-26 09:53:27
    varchar类型用于存储可变长字符串,比定长类型更节省空间,因为它仅适用必要的空间(例如,越短的字符串使用越少的空间)。 varchar节省了存储空间,所以对性能也有帮助。但是,由于行是变长的,在update时可能使行...
  • 1)char长度是固定,而varchar长度是可变的; 比如:'abc'对于char(10)表示存储字符将占10个字节(包括7个空字符),而同样varchar(10)只占3个自己长度,10只是表示最大值,当存储的字符小于最大值时,按实际存储;...
  • 字符与字节的区别 一个字符由于所使用的字符集的不同,会并存储在一个或多个字节中,所以一个字符占用多少个字节取决于所使用的字符集 注意:charvarchar后面接的数据大小为存储的字符数,而不是字节数 char...
  • 在字符型数据中,用的最多的就是 CharVarchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用 Varchar字符型数据。 一、VARCHARCHAR...
  • mysql中char和varchar区别

    千次阅读 2016-04-22 16:18:57
    char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是: char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的...
  • 1.CHAR VARCHAR 之间的区别 CHAR 是固定长度字符,VARCHAR 是可变长度字符。 CHAR 会自动删除插入数据的尾部空格,VARCHAR 不会删除尾部空格。 CHAR 是固定长度,所以它的处理速度比 VARCHAR 的速度要快,但是...
  • 转载SQL server 中的char和varchar区别 具考证:在字符长度一定时CHAR的性能比VARCHAR好,而在长度不确定时,CHAR类型的字段在使用时性能略差。这个在sqlServer数据库下面能够体现,并且这个字段是经常使用的。 区别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,519
精华内容 1,007
关键字:

char和varchar区别