MySQL数据类型中char与varchar、blob与text的区别

CHAR与VARCHAR的定义:

  • CHAR类型用于定义长字符串,并且必须在圆括号内用一个大小修饰符定义,修饰符的范围是0~255。比指定长度大的值将被截短,比指定长度小的值将会用空格昨填补。
  • VARCHAR类型是CHAR的变体,是一种可变长字符串类型,必须带一个范围在0~65535的指示器。

CHAR与VARCHAR的区别:

  • 它们之间的不同处在于MySQL数据库处理指示器的方式,CHAR把这个大小视为值的大小,在长度不足的时用空格补足。而VARCHAR类型把它是为最大值,并且只存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值,所以短于指示器长度的VARCHAR类型不会被空格填补,长于指示器的值仍然会被截短。。。

  • VARCHAR类型可以根据实际内容动态改变存储值的长度,因此在不能确定字段需要多少字符时使用VARCHAR类型可以有效地节约磁盘空间、提高存储效率。

  • char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而
    varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。

TEXT类型与BLOB类型相同点:

  1. 在TEXT或BLOB列的存储或检索过程中不存在大小写转换,当未运行在严格模式下时,若为TEXT或BOLB列分配一个超过该列类型的最大长度值时,则值会被截取。若截取的字符不是空格,将提示一条警告信息

  2. TEXT和BOLB列不能又默认值。

  3. 在保存或检索TEXT和BLOB列的值时不删除尾部空格。

  4. 对于TEXT和BLOB列的索引,必须指定索引前缀的长度。

TEXT类型与BLOB类型的不同点:

  1. TEXT值对大小写不敏感,而BLOB对大小写敏感。

  2. TEXT被视为非二进制字符串,而BLOB被视为二进制字符串。

  3. TEXT根据字符集的校对规则对值进行排序和比较,BLOB列没有字符集。

  4. 可将TEXT列视为 VARCHAR列,将BLOB列视为VARBINARY列。

  5. BLOB可以存储图片,而TEXT只能存储纯文本文件。

你可能感兴趣的:(MySQL)