mysql中varchar和char的区别

转自百度知道
char   和   varchar   
  固定长度   (char)   或可变长度   (varchar)   字符数据类型。   
    
  char[(n)]   
    
  长度为   n   个字节的固定长度且非   Unicode   的字符数据。n   必须是一个介于   1   和   8,000   之间的数值。存储大小为   n   个字节。char   在   SQL-92   中的同义词为   character。   
    
  varchar[(n)]   
    
  长度为   n   个字节的可变长度且非   Unicode   的字符数据。n   必须是一个介于   1   和   8,000   之间的数值。存储大小为输入数据的字节的实际长度,而不是   n   个字节。所输入的数据字符长度可以为零。varchar   在   SQL-92   中的同义词为   char   varying   或   character   varying。   
    
  注释   
  如果没有在数据定义或变量声明语句中指定   n,则默认长度为   1。如果没有使用   CAST   函数指定   n,则默认长度为   30。   
    
  将为使用   char   或   varchar   的对象被指派数据库的默认排序规则,除非用   COLLATE   子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。   
    
  支持多语言的站点应考虑使用   Unicode   nchar   或   nvarchar   数据类型以尽量减少字符转换问题。如果使用   char   或   varchar:     
    
  如果希望列中的数据值大小接近一致,请使用   char。   

如果希望列中的数据值大小显著不同,请使用   varchar。     
  如果执行   CREATE   TABLE   或   ALTER   TABLE   时   SET   ANSI_PADDING   为   OFF,则一个定义为   NULL   的   char   列将被作为   varchar   处理。     
    
  当排序规则代码页使用双字节字符时,存储大小仍然为   n   个字节。根据字符串的不同,n   个字节的存储大小可能小于   n   个字符。
 
 
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

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

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

  1、在一个数据表里,如果每一个数据列的长度都是固定的,那么每一个数据行的长度也将是固定的.
  2、只要数据表里有一个数据列的长度的可变的,那么各数据行的长度都是可变的.
  3、如果某个数据表里的数据行的长度是可变的,那么,为了节约存储空间,MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型.
例外:长度小于4个字符的char数据列不会被转换为varchar类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值