MySQL VARCHAR与CHAR的区别、VARCHAR(50)中的50代表什么

1、VARCHAR与CHAR的区别

CHAR是一种固定长度的类型,VARCHAR则是一种可变长度的类型。

CHAR列的长度固定为创建表时声明的长度,长度可以为从0到255(2^8-1=255)的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。

VARCHAR列中的值为可变长字符串,长度可以指定为0到65535(2^16-1=65535)之间的值。VARCHAR的最大有效长度由最大行大小和使用的字符集确定。

2、VARCHAR(50)中的50代表什么?

  • 在MySQL 4.X的版本中,VARCHAR(50)的“50”指的是50字节(bytes)。如果存放UTF8汉字时,那么最多只能存放16个(每个汉字3字节)

  • 在MySQL5.X的版本中,VARCHAR(50)的“50”指的是50字符(character),无论存放的是数字、字母、还是UTF8汉字(每个汉字3字节),都可以存放50个。

一个汉字占多少长度与编码有关

  • UTF-8:一个汉字 = 3个字节,英文是一个字节
  • GBK: 一个汉字 = 2个字节,英文是一个字节

CHAR和VARCHAR类型声明的长度表示保存的最大字符数。例如,CHAR(30)可以占用30个字符。

  • 对于MyISAM表,推荐CHAR类型
  • 对于InnoDB表,推荐VARCHAR类型

另外,在进行检索的时候,若列值的尾部含有空格,则CHAR列会删除其尾部的空格,而VARCHAR则会保留空格。

发布了15 篇原创文章 · 获赞 1 · 访问量 722

猜你喜欢

转载自blog.csdn.net/max1231ff/article/details/103002498